我有一个用户表,角色表和通知表。 user_id是用于将用户链接到通知的外键。
在我的用户类中,我已经通过其外键role_id访问另一个表,角色。 如图所示
@Data
@Entity
@Table(name = "users")
public class User {`enter code here`
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column
private Long id;
@Column
@NotBlank
@Size(max = 40)
private String username;
// Valid From
@Column
private Date validFrom;
// Valid To
@Column
private Date validTo;
@Column
@NotBlank
@Size(max = 100)
private String password;
@OneToOne(fetch = FetchType.LAZY)
@JoinTable(name = "user_roles",
joinColumns = @JoinColumn(name = "user_id"),
inverseJoinColumns = @JoinColumn(name = "role_id"))
private Role role;
public User() {
}
public User(String username, String password) {
this.username = username;
this.password = password;
}
}
如何使用@JoinTable批注连接到通知表? 它不接受重复项。
答案 0 :(得分:2)
您一定不能使用@JoinTable批注。 @JoinTable批注仅用于@ManyToMany关系。
您需要创建一个具有三个字段的新实体,每个字段必须具有@ManyToOne和@JoinColumn批注。 例如:
@Entity
@Table(name = "table_name")
class NewEntity {
//Id and anothers fields
@ManyToOne
@JoinColumn(name = "user_id")
private Users users;
@ManyToOne
@JoinColumn(name = "role_id")
private Roles roles;
@ManyToOne
@JoinColumn(name = "notification_id")
private Notifications notifications ;
//getters and setters
}