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

时间:2018-07-31 17:14:18

标签: hibernate

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

我想要什么:

class User {
    private Set<String> roles;
}

我不想要的东西:

class User {
    private Set<Role> roles;
}

是否可以通过ManyToMany关系以单个查询或某些其他选项来实现此目的?是否在获取后不使用DTO并复制角色标题?

谢谢。

p.s。我有3个表:一个用于用户,一个用于角色,一个用于将用户连接到角色。

1 个答案:

答案 0 :(得分:0)

自定义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 ...