gpt4 book ai didi

hibernate - 如何让 spring 注入(inject)我的 EntityManager?

转载 作者:行者123 更新时间:2023-12-02 22:59:21 25 4
gpt4 key购买 nike

我正在遵循指南 here ,但是当 DAO 执行时,EntityManagernull

我已经尝试了在指南的评论、各个论坛和此处(包括 this )中找到的许多修复程序,但均无济于事。无论我做什么,EntityManager 仍然是 null

以下是相关文件,其中包等已更改以保护无辜者。

spring-context.xml

    <?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"
xmlns:p="http://www.springframework.org/schema/p">

<context:component-scan base-package="com.group.server"/>
<context:annotation-config/>
<tx:annotation-driven/>

<bean id="propertyPlaceholderConfigurer"
class="com.group.DecryptingPropertyPlaceholderConfigurer"
p:systemPropertiesModeName="SYSTEM_PROPERTIES_MODE_OVERRIDE">
<property name="locations">
<list>
<value>classpath*:spring-*.properties</value>
<value>classpath*:${application.environment}.properties</value>
</list>
</property>
</bean>

<bean id="orderDao" class="com.package.service.OrderDaoImpl"/>

<bean class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor"/>

<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="persistenceUnitName" value="MyServer"/>
<property name="loadTimeWeaver">
<bean class="org.springframework.instrument.classloading.InstrumentationLoadTimeWeaver"/>
</property>
<property name="dataSource" ref="dataSource"/>
<property name="jpaVendorAdapter">
<bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
<property name="showSql" value="${com.group.server.vendoradapter.showsql}"/>
<property name="generateDdl" value="${com.group.server.vendoradapter.generateDdl}"/>
<property name="database" value="${com.group.server.vendoradapter.database}"/>
</bean>
</property>
</bean>

<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory" ref="entityManagerFactory"/>
<property name="dataSource" ref="dataSource"/>
</bean>

<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="${com.group.server.datasource.driverClassName}"/>
<property name="url" value="${com.group.server.datasource.url}"/>
<property name="username" value="${com.group.server.datasource.username}"/>
<property name="password" value="${com.group.server.datasource.password}"/>
</bean>

<bean id="executorService" class="java.util.concurrent.Executors" factory-method="newCachedThreadPool"/>

</beans>

持久性.xml

<persistence  xmlns="http://java.sun.com/xml/ns/persistence"  version="1.0">
<persistence-unit name="MyServer" transaction-type="RESOURCE_LOCAL"/>
</persistence>

OrderDaoImpl

 package com.group.service;

import com.group.model.Order;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;

import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;
import java.util.List;

@Repository
@Transactional
public class OrderDaoImpl implements OrderDao {

private EntityManager entityManager;

@PersistenceContext
public void setEntityManager(EntityManager entityManager) {
this.entityManager = entityManager;
}

@Override
public Order find(Integer id) {
Order order = entityManager.find(Order.class, id);
return order;
}

@Override
public List<Order> findAll() {
Query query = entityManager.createQuery("select o from Order o");
return query.getResultList();
}

@Override
public List<Order> findBySymbol(String symbol) {
Query query = entityManager.createQuery("select o from Order o where o.symbol = :symbol");
return query.setParameter("symbol", symbol).getResultList();
}
}

最佳答案

您是否尝试过将 unitName="MyServer" 添加到您的 @PersistenceContext 注释中?

关于hibernate - 如何让 spring 注入(inject)我的 EntityManager?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2588782/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com