是否可以使用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 ...