我试图用IntelliJ IDEA配置JavaEE项目。
我的配置:
不幸的是,当我启动我的项目时,会显示404页面: EJBTransactionRolledbackException。
我不明白这个例外或这个问题...也许它是我的文件persistence.xml:
<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence" version="2.0">
<persistence-unit name="PU" transaction-type="JTA">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<properties>
<property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver" />
<property name="hibernate.connection.user" value="root" />
<property name="hibernate.connection.password" value="root" />
<property name="hibernate.connection.url" value="jdbc:mysql://localhost:3306/supbartering" />
<property name="hibernate.hbm2ddl.auto" value="update" />
</properties>
</persistence-unit>
</persistence>
我用它:
@PersistenceContext(unitName = "PU")
private EntityManager mEntityManager;
这是我第一次将Intellij与JEE项目和GlassFish服务器一起使用,但我无法实现良好的配置。
答案 0 :(得分:1)
您正在使用Hibernate特定的&#34;本地数据源&#34;属性,但您声称要使用JTA事务。这是不一致的。参见JPA规范的第8.2.1.2节
transaction-type属性用于指定实体是否 管理者为实体经理工厂提供的持久性 单位必须是JTA实体经理或资源本地实体经理。 此元素的值为JTA或RESOURCE_LOCAL。交易类型 JTA假定将提供JTA数据源 - 或者作为 由jta-data-source元素指定或由容器提供。 通常,在Java EE环境中,是一种事务类型 RESOURCE_LOCAL假定将提供非JTA数据源。在 Java EE环境,如果未指定此元素,则为默认值 是JTA。在Java SE环境中,如果未指定此元素, 默认值为RESOURCE_LOCAL。
所以你要么使用JTA,要在外部定义你的JTA数据源,并指定&#34; jtaDataSource&#34;在persistence.xml中(并删除url / user / password / driver),或者使用RESOURCE_LOCAL事务并通过连接URL / user / password / driver属性定义数据源(并使用标准的javax.persistence属性,如{{3显示)。