我试图删除具有相同 id 的 2 行(每个表中 1 行),在我的服务类中,正在使用 id 很好地创建啤酒厂对象,但是当尝试创建 BreweriesGeocode 对象时,BreweriesGeocode对象退出 try 并将我带到 error.jsp 页面。
导致它中断的代码行是
bg = em.createNamedQuery("BreweriesGeocode.findById", BreweriesGeocode.class)
.setParameter("id", (id))
.getSingleResult();
BreweriesService.java中deleteAnBrewery整个方法的代码为
public void deleteAnBrewery(int id) {
EntityManager em = DBUtil.getEMF().createEntityManager();
EntityTransaction trans = em.getTransaction();
Breweries b = null;
BreweriesGeocode bg = null;
try {
b = em.createNamedQuery("Breweries.findById", Breweries.class)
.setParameter("id", (id))
.getSingleResult();
bg = em.createNamedQuery("BreweriesGeocode.findById", BreweriesGeocode.class)
.setParameter("id", (id))
.getSingleResult();
trans.begin();
em.remove(em.merge(b));
em.remove(em.merge(bg));
trans.commit();
} catch (Exception ex) {
System.out.println("Error in getting property details: " + ex);
} finally {
em.clear();
em.close();
}
}
我在终端中没有收到任何错误
最佳答案
我没有在 try
之外将对象设置为 null,我不知道这是否是解决方案,因为我认为这不会产生影响,唯一的其他更改是关闭并再次打开我的 Netbeans,这不是一个可靠的解决方案
public void deleteAnBrewery(int id) {
EntityManager em = DBUtil.getEMF().createEntityManager();
EntityTransaction trans = em.getTransaction();
try {
Breweries b = em.createNamedQuery("Breweries.findById", Breweries.class)
.setParameter("id", (id))
.getSingleResult();
BreweriesGeocode bg = em.createNamedQuery("BreweriesGeocode.findById", BreweriesGeocode.class)
.setParameter("id", (id))
.getSingleResult();
trans.begin();
em.remove(em.merge(b));
em.remove(em.merge(bg));
trans.commit();
} catch (Exception ex) {
System.out.println("Error in getting property details: " + ex);
} finally {
em.clear();
em.close();
}
}
关于java - 尝试使用 JPA 删除数据库中的 2 行。一个对象是根据 id 创建的,但其他对象不是,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60547235/