在Hibernate中是否有方法允许使用非主键字段来描述关系?
如何在Hibernate中描述用户和权限?
当我使用@OneToMany
和@ManyToOne
时,它只是帮助Authorities
创建一个名为user_id
的字段,它将引用用户id。
实体关系模型
https://i.stack.imgur.com/3k0eS.png
Java类
@Entity
@Table(name = "Users")
public class User {
@Id
@GeneratedValue
private Long id;
private String username;
// ...getters and setters
}
,
@Entity
@Table(name = "Authorities")
public class Authority {
@Id
@GeneratedValue
private Long id;
@ManyToOne(fetch = FetchType.LAZY)
private User user;
// ...getters and setters
}
您可以在User
实体的username
字段上使用@NaturalId
注释,然后通过@ManyToOne(referencedColumnName=...)
在Authority
实体中引用该列。
@Entity
@Table(name = "Users")
public class User {
@Id
@GeneratedValue
private Long id;
@NaturalId
private String username;
// ...getters and setters
}
,
@Entity
@Table(name = "Authorities")
public class Authority {
@Id
@GeneratedValue
private Long id;
@ManyToOne(fetch = ...)
@JoinColumn(
name = "username",
referencedColumnName="username"
)
private User user;
// ...getters and setters
}