【发布时间】:2017-08-01 23:47:35
【问题描述】:
我可以通过普通的 HQL 删除任何行,例如
Query q = em.createQuery("DELETE FROM Cities WHERE id = :id");
但我想删除它像
Cities city = em.getReference(Cities.class, 8);
try {
em.getTransaction().begin();
em.remove(city);
em.getTransaction().commit();
}
catch(RuntimeException e) {
e.printStackTrace();
em.getTransaction().rollback();
}
我没有收到任何警告或错误
模型很简单
国家(仅限 OneToMany 注释)
@OneToMany(mappedBy = "country", cascade = CascadeType.ALL, fetch = FetchType.EAGER, orphanRemoval = true)
private List<Cities> cities;
城市(仅限 fk 字段)
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "country_id", nullable = false)
private Countries country;
我正在尝试的事情是:
1) trying to apply orphanRemoval = true
2) cascade = CascadeType.MERGE to Cities
3) em.refresh(city)
【问题讨论】:
-
您是在说“我没有收到任何警告或错误”,因此系统没有出现任何错误。那么问题是什么?
-
我在这些更改后达到了结果:try { em.getTransaction().begin(); city.setCountries(null); em.refresh(城市); em.remove(城市); em.getTransaction().commit(); } catch(RuntimeException e) { e.printStackTrace(); em.getTransaction().rollback(); }
-
问题是为什么子实体中没有删除不删除FK并像上面一样刷新:(
标签: java hibernate jpa java-ee-7 persistent