將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