java - 在 Hibernate 中无法删除没有子级的父级

标签 java hibernate jpa

我有两个对象用户工作订单。一个用户可以有多个工单。问题是当我删除用户时,它也会删除分配给该用户的工作订单。我尝试在删除用户之前将工作订单外键设置为 NULL,但它仍然删除与该用户关联的所有工作订单。我想删除用户而不删除分配给用户的工作订单。我错过了什么或做错了什么?

这是我的用户类:

   @OneToMany(fetch = FetchType.LAZY, mappedBy="user", orphanRemoval=true)
   private Set<WorkOrder> workOrder;

工作订单类:

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name="user_id", nullable = true)
    private User user;

UserDAOImpl 类:

    @Override
    public void deleteUser(int theId) {
        // get the current hibernate session

        Session currentSession = sessionFactory.getCurrentSession();

        // delete object with primary key

        User user = currentSession.get(User.class, theId);  
        Set workorders = user.getWorkOrder();


        Iterator<WorkOrder> work = workorders.iterator();
        while (work.hasNext()){

            WorkOrder workorder = work.next();
            workorder.setUser(null); 
            }   

        currentSession.remove(user);
    }

最佳答案

删除“orphanRemoval=true”并检查 Workorder.user 上没有“级联”(如果关系是双向的)

关于java - 在 Hibernate 中无法删除没有子级的父级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41624548/

相关文章:

java - 创建 SQL 插入语句到 CSV 文件

java - 动态添加新的maven依赖?

java - JTA事务和线程

java - HashCode 循环调用 : OneToMany JPA

java - Spring 启动: Response timestamp is advance 1 hour

java - 在 ExecutorService 的提交和 ExecutorService 的执行之间进行选择

java - Seam Mail 内联图像问题

sql - 如何在 Hibernate/Oracle 中使用正则表达式

mysql - JPA/Hibernate/mySql 中没有持久化数据

java - 如何使用@PrePersist 的 EntityManager?