【问题标题】:Hibernate: How to cascade unmapped entity?Hibernate:如何级联未映射的实体?
【发布时间】:2019-04-02 08:49:49
【问题描述】:

是否可以在不映射一对多关系的情况下设置级联?

我有两个实体:

@Entity
@Table(name = "USER")
public class User {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "ID")
    private Long id;

    ...
}

和

@Entity
@Table(name = "RECORD")
public class Record  {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "ID")
    private Long id;

    @ManyToOne
    @JoinColumn(name = "USER")
    private User user;

    ...
}

如果我尝试删除一个用户并且存在该用户的任何记录,它显然会因为外键而失败。我想在删除用户之前删除所有用户的记录。 我看到两个选项:

  1. 将Records 映射为User 中的@OneToMany 关系并设置cascade。

    @OneToMany(mappedBy = "user", cascade = CascadeType.REMOVE)
    private Set<Record> records;
    
  2. 在删除用户之前手动删除它们

有没有第三个选项,如何设置级联而不映射用户实体中的记录?

【问题讨论】:

    标签: java hibernate jpa


    【解决方案1】:

    JPA 中的级联工作不好,最好手动处理。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多