我想刪除JPA/Hibernate配置中的實體。數據庫是一個嵌入式HSQL文件。休眠:無法刪除實體
這是代碼做刪除:
EntityManager em = PersistenceUtility.getInstance().createEntityManager();
EntityTransaction t = em.getTransaction();
t.begin();
List<ServiceTicket> tickets = em.createQuery("from ServiceTicket").getResultList();
for (ServiceTicket ticket : tickets) {
Report report = ticket.getReport();
em.merge(report);
em.merge(ticket);
em.remove(report);
em.remove(ticket);
}
em.flush();
t.commit();
的ServiceTicket
引用entitiy Report
。這就是爲什麼我必須先刪除Report
。
在這種情況下我沒有收到錯誤信息。但是這些更改不會寫入數據庫。
這裏是持久性單元的配置:
<persistence-unit name="local_hsql" transaction-type="RESOURCE_LOCAL">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<class>Report</class>
<class>ServiceTicket</class>
<properties>
<property name="hibernate.connection.driver_class" value="org.hsqldb.jdbcDriver"/>
<property name="hibernate.connection.url" value="jdbc:hsqldb:file:etc/database/db1"/>
<property name="hibernate.dialect" value="org.hibernate.dialect.HSQLDialect"/>
<property name="hibernate.cache.provider_class" value="org.hibernate.cache.NoCacheProvider"/>
<property name="hibernate.show_sql" value="false"/>
<property name="hibernate.connection.SetBigStringTryClob" value="true"/>
<property name="hibernate.hbm2ddl.auto" value="update"/>
</properties>
我在做什麼錯?
提前感謝和問候來自德國
馬爾科
Acouple:有沒有需要合併的entites,他們已經進行管理。另外請記住,合併返回一個託管實體,但對作爲參數傳遞的對象沒有任何作用。因爲您在之後提交行中的更改,所以不需要刷新。另一種(更簡單的)方法是在報表中聲明ServiceTicket的映射爲cascade = CascadeType.REMOVE(或ALL),並且只在報表上調用em.remove()。也許EntityManager有問題。有沒有什麼工作與這個時間? (就像它在這段代碼中找到Reports一樣)(打開show sql) – esej 2012-04-27 09:52:16