Spring Data JPA Hibernate中的非关键字段引用



在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
}

最新更新