使用休眠:
@PersistenceUnit(unitName = "oracle")
private EntityManagerFactory emf;
@Resource
private UserTransaction u;
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
EntityManager em = emf.createEntityManager();
try {
u.begin();
em.persist(some entity);
u.commit();
} catch (Exception e) {
e.printStackTrace();
}
这不会向数据库写入任何内容,如果我切换到 EclipseLink 它可以正常工作。
如果我使用
EntityTransaction et = em.getTransaction();
而不是UserTransaction
休眠写入数据库。(所以不知何故,hibernate 看不到 JTA,就像 EclipseLink 一样)。
休眠有什么问题?(4.0.0-Final)谢谢
编辑:
我添加了最后 2 个属性:(我正在使用 glassfish)
<properties>
<property name="hibernate.dialect" value="org.hibernate.dialect.OracleDialect"/>
<property name="hibernate.show_sql" value="true"/>
<property name="hibernate.hbm2ddl.auto" value="create-drop"/>
<property name="hibernate.transaction.factory_class" value="org.hibernate.transaction.JTATransactionFactory" />
<property name="hibernate.transaction.manager_lookup_class" value="org.hibernate.transaction.SunONETransactionManagerLookup" />
</properties>
但仍然不起作用