使用Hibernate获取单个列而不是整个实体



是否可以使用Hibernate不映射整个实体,只映射其中一列?我有用户和角色实体。每个用户可以有多个角色,但我只想获取角色的标题。

我想要什么:

class User {
private Set<String> roles;
}

我不想要的:

class User {
private Set<Role> roles;
}

是否可以通过ManyToMany关系,通过单个查询或其他选项以某种方式实现这一点?在获取后不使用DTO并复制角色标题?

谢谢。

p.s.我有3个表:一个是用户表,一个是角色表,还有一个是连接用户和角色的表。

自定义User构造函数可以工作:

class User {
private List<Role> roles;  // changed to List for easier access
User(String fName, String lName, String roleName, long roleId){
this.fName=fName;
this.lName=lName;
this.roles = new ArrayList<>();
this.roles.get(0).setRoleName(roleName);
this.roles.get(0).setRoleId(roleId);
}
}

然后发出您的查询:select new your.package.User(u.firstName, u.lastName, u.role.name, u.role.id) from User u where ...

最新更新