jpa 删除是否成功_JPA / Hibernate删除实体有时不起作用
我有以下通常正常工作的代碼:
public void delete(T object)
{
EntityManager em = getPersistence().createEntityManager();
EntityTransaction et = em.getTransaction();
try
{
et.begin();
object = em.find(object.getClass(), object.getId());
em.remove(object);
em.flush();
et.commit();
}
catch(Exception e)
{
error("Unable to delete " + object.toString() + ": there are references to it.");
}
finally
{
if (et.isActive()) et.rollback();
em.close();
}
}
對(duì)于我的許多實(shí)體類來說,這都是可行的。但是對(duì)于其中的兩個(gè)它什么也不做,它不會(huì)引發(fā)任何異常,也不會(huì)刪除該對(duì)象。來自hibernate的日志顯示,hibernate執(zhí)行了許多選擇查詢,但它甚至沒有嘗試執(zhí)行刪除。
我已經(jīng)在這里和這里嘗試了在其他類似問題中發(fā)現(xiàn)的建議,但是沒有用(嗯,后者建議@Transactional我不能使用,但是我只是在begin()和之間加上了語句commit())。
我似乎找不到這兩個(gè)類比其他類更多(或更少)的東西。他們使用@PrimaryKeyJoinColumn,就像幾乎所有其他實(shí)體我有,他們有@OneToMany和@ManyToOne一樣ohters。老實(shí)說,他們確實(shí)有一個(gè)@OneToOne(optional
= false)引用另一個(gè)類的字段,而其他實(shí)體則沒有,但是除非您告訴我可能有原因,否則我不會(huì)經(jīng)歷更改它的麻煩(并因此更改了數(shù)據(jù)庫模式)。為了它。
是@OneToOne責(zé)任?還是我的刪除代碼有問題?
總結(jié)
以上是生活随笔為你收集整理的jpa 删除是否成功_JPA / Hibernate删除实体有时不起作用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c语言x的2取模_c语言如何取模运算
- 下一篇: boot jpa mysql postm