Spring JPA和persistence.xml

我正在尝试设置一个Spring JPA Hibernate简单示例WAR以便部署到Glassfish。我看到一些示例使用persistence.xml文件,而其他示例则没有。有些示例使用数据源,有些则不使用。到目前为止,我的理解是,如果我拥有以下内容,则不需要dataSource:

<persistence-unit name="educationPU"

transaction-type="JTA">

<provider>org.hibernate.ejb.HibernatePersistence</provider>

<class>com.coe.jpa.StudentProfile</class>

<properties>

<property name="hibernate.connection.driver_class"

value="com.mysql.jdbc.Driver" />

<property name="hibernate.connection.url"

value="jdbc:mysql://localhost:3306/COE" />

<property name="hibernate.connection.username" value="root" />

<property name="show_sql" value="true" />

<property name="dialect" value="org.hibernate.dialect.MySQLDialect" />

</properties>

</persistence-unit>

我可以很好地部署,但是Spring不会注入我的EntityManager。

我的applicationContext.xml:

<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalEntityManagerFactoryBean">

<property name="persistenceUnitName" value="educationPU" />

</bean>

<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">

<property name="entityManagerFactory" ref="entityManagerFactory" />

</bean>

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

<tx:annotation-driven transaction-manager="transactionManager" />

<bean id="StudentProfileDAO" class="com.coe.jpa.StudentProfileDAO">

<property name="entityManagerFactory" ref="entityManagerFactory" />

</bean>

<bean id="studentService" class="com.coe.services.StudentService">

</bean>

我的EntityManager类:

public class StudentService {

private String saveMessage;

private String showModal;

private String modalHeader;

private StudentProfile studentProfile;

private String lastName;

private String firstName;

@PersistenceContext(unitName="educationPU")

private EntityManager em;

@Transactional

public String save()

{

System.out.println("*** em: " + this.em); //em is null

this.studentProfile= new StudentProfile();

this.saveMessage = "saved";

this.showModal = "true";

this.modalHeader= "Information Saved";

return "successs";

}

我的web.xml:

  <listener>

<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>

我缺少Spring将“ em”注入StudentService的功能吗?

回答:

只是为了确认你是否确实…

你是否包括了

<!--  tell spring to use annotation based congfigurations -->

<context:annotation-config />

<!-- tell spring where to find the beans -->

<context:component-scan base-package="zz.yy.abcd" />

你的应用程序context.xml中的位?

另外我不确定你是否可以通过这种设置使用jta事务类型?那不需要数据源托管的连接池吗?因此,请尝试使用RESOURCE_LOCAL。

以上是 Spring JPA和persistence.xml 的全部内容, 来源链接: utcz.com/qa/408554.html

回到顶部