将hibernate-link和JTA视为持久性提供者。我如何强迫他们不要冲洗任何东西,并自己处理它?在刷新之前管理持久化上下文
@Stateless
public class SomeBean{
@PersistenceContext
EntityManager em;
public void method(){
em.persist(entity); // will get managed
em.clear(); // everything gets unmanaged
}
}
我希望没有什么刷新到数据库中,但我可以在mysql外壳见。那么我如何强制EntityManager
在持续后不刷新任何东西? 谢谢
persistence.xml
的完整性
<persistence version="1.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd ">
<persistence-unit name="pu" transaction-type="JTA">
<provider>org.hibernate.ejb.HibernatePersistence
<jta-data-source>jdbc/fotbalDataSource
<properties>
<property name="hibernate.hbm2ddl.auto" value="update"/>
</properties>
</persistence-unit>
</persistence>
它看起来像一个休眠的bug。我切换到eclipselink后,它按预期工作 – coubeatczech 2010-09-16 10:19:37
@coubeatczech有趣。我真的很想知道这是否是对规范解释的错误或不同。您是否创建了Jira问题? – 2010-09-16 10:23:25
@coubeatczech不知何故,我不相信你所“期待”的是正确的行为。 JPA规范没有定义任何NEW - > MANAGED - > NEW转换。而且由于NEW - > MANAGED - > DETACHED需要使实体在分离之前保持持久性,所以我认为Hibernate实际上更加正确。 – 2010-09-16 14:54:42