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








