java - 无法在 hibernate 中删除 OneToMany 关系的实例

标签 java hibernate hibernate-onetomany

我有一个OneToMany关系,我可以插入记录但不能删除它们,当我尝试删除它时遇到“外键约束失败”错误。我已经使用了级联删除孤儿,如下所示,但尚未工作。

父类的成员有以下 getter

import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.OneToMany;

@Entity
@DynamicUpdate
public class User extends Employee{
    private string userli;
    privae List<Message> messagelist();

    .....

    @OneToMany(fetch = FetchType.LAZY,cascade = CascadeType.REMOVE)
    public List<Message> getMessagelist() {
        return messagelist;
    }

成员类的父类具有以下 getter

import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.ManyToOne;
 ......  

   @ManyToOne
   public User getReciever() {
        return reciever;
   }

我也使用了以下注释,但没有工作

     @Cascade(org.hibernate.annotations.CascadeType.DELETE)

我的 hibernate 依赖如下

 <dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-core</artifactId>
    <version>4.2.1.Final</version>
    <type>jar</type>
</dependency>

我的删除消息的代码

            Message message = (Message) session.get(Message.class, id);
            session.delete(message);
            tx.commit();

最佳答案

Try to change the cascade = cascadeType.ALL 

and check

    @OneToMany(fetch = FetchType.LAZY,cascade = CascadeType.ALL)
    public List<Message> getMessagelist() {
            return messagelist;

It might work but not sure 

关于java - 无法在 hibernate 中删除 OneToMany 关系的实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17960087/

相关文章:

java - 使用 Antlr 获取标识符和函数名

java - Spring hibernate 事务

java - Hibernate:由于一对一关系,主键生成不一致

java - 对带有一对多连接 native 查询的第一个表使用 setMaxResults

java - Hibernate 是否可以通过一次选择获取两层集合?

java - 将数据插入动态创建的表列时面临的问题

java - 循环遍历 arrayList

spring-boot - spring boot REST Api 中的一对多关系

java - 如何使用 OAuth2 验证用户

mysql - Hibernate MYSQL字符异常