我正在使用SpringBoot + PostgreSQL + JPA Hibernate,一切似乎工作正常,但是Cascade.ALL属性未应用于表user_roles。我错过任何重要的东西吗?我已经尝试过ManytoMany关系和ManytoOne,但是还没有运气。
我正在使用的实体文件如下。
User.java
@Entity
@Table(name = "USERS")
@JsonIgnoreProperties({"hibernateLazyInitializer", "handler"})
public class User {
@Id
@SequenceGenerator( name = "lineupSeq", sequenceName = "lineup_seq", allocationSize = 20, initialValue = 50 )
@GeneratedValue( strategy = GenerationType.SEQUENCE, generator = "lineupSeq" )
@Column(name="id")
private Long id;
@Column(unique=true)
private String username;
@Column
@JsonIgnore
private String password;
@Column(name="prodcrud")
private String prodcrud;
@Column(name="devcrud")
private String devcrud;
@Column(name="testcrud")
private String testcrud;
@ManyToOne(fetch = FetchType.EAGER, cascade=CascadeType.ALL)
@JoinTable(name = "user_roles",
joinColumns = {@JoinColumn(name = "user_id", referencedColumnName="id") },
inverseJoinColumns = {@JoinColumn(name = "role_id", referencedColumnName="id") })
private Role role;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
已添加postgres约束的屏幕截图 Postgres constraint added
答案 0 :(得分:1)
是的,您只是希望此批注执行不做的事情。
Cascade.ALL
告诉JPA,在运行时使用User
对J {1}执行的每个操作(持久,合并,删除等)也必须应用在其role
上。
请注意,这没有意义:由于它是ManyToOne
,因此在删除用户时尝试删除用户的角色将导致破坏外键约束,因为其他人也引用了相同的角色用户。
阅读文档。不要猜测注释会做什么。