java - 尝试使用 JPA 删除数据库中的 2 行。一个对象是根据 id 创建的,但其他对象不是

标签 java spring jpa

我试图删除具有相同 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/

相关文章:

java - Spring 的正确版本或 jackson 是什么?

java - 无法刷新非托管对象

java - 通过 MYSQL 存储过程通过 JDBC 插入韩文字符出错

java - JSTL形式相对路径

java - 使用 @ImportResource 注释获取对 ApplicationContext 的引用?

java - Spring MVC。 Controller 和 JSP 协作

Java 泛型名称冲突,方法未正确覆盖

java - 如何连接java和Adf.ly?

java - 如何在 hibernate 中限制对象属性中的集合?

mysql - 当我更改实体字段的大小时,它在数据库中没有更改