我有两个实体-如下所示的用户和角色
@Entity
@Table(name = "USER")
public class UserObj implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@Column(name = "USER_ID")
private long userId;
@Column(name = "USER_NM")
private String userNm;
@Column(name = "USER_EMAIL")
private String userEmail;
@Column(name = "ROLE_ID")
private String roleId;
---getter setter----
}
@Entity
@Table(name = "ROLE")
public class RoleObj implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@Column(name = "ROLE_ID")
private long roleId;
@Column(name = "ROLE_NM")
private String roleNm;
@Column(name = "ROLE_DESC")
private String roleDesc;
---getter setter----
}
用户表将具有角色表中的角色ID。
同时查询实体(使用休眠),如何在用户对象(不是作为角色对象)中获取role_nm,而仅在role_nm字符串字段中获取。
您需要在UserObj类中添加一个字段,并使用@Formula批注。像这样:
@Fomula( "( SELECT r.role_nm FROM role r WHERE r.role_id = role_id )" )
private String roleNm;
您可以将角色对象添加到具有ManyToOne关系并渴望获取类型的用户实体。这样,无论何时获取用户对象,都将与用户一起获取角色对象。
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "ROLE_ID")
private RoleObj roleObj;
之后,您可以像这样获得用户的roleNm
user.getRoleObj().getRoleNm()