我有两个映射到实体 User
和 Group
的表。
@Entity
@Table(name = "T_COM_USER")
public class User {
private String userName;
@Column(name="F_USERNAME", length=60)
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
}
@Entity
@Table(name="T_COM_USERGROUP")
public class UserGroup{
private String groupName;
@Column(name="F_GROUPNAME", length=60)
public String getGroupName() {
return groupName;
}
public void setGroupName(String groupName) {
this.groupName = groupName;
}
}
一个用户可以拥有多个组。我需要对它们进行建模,以便在前端以表格的形式显示所有用户及其所属组,如下所示:
+-------+----------------------+
| Users | Groups |
+-------+----------------------+
| User1 | Group1,Group2,Group3 |
| User2 | Group1,Group2 |
| User3 | Group2,Group4 |
+-------+----------------------+
因此,我创建了这个数据传输对象(DTO):
public class UserGroupsBean {
private List<String> groupName;
private String userName;
public UserGroupsBean(String userName, List<String> groupName) {
this.userName = userName;
this.groupName = groupName;
}
// Getters
public List<String> getGroupName() { return groupName; }
public String getUserName() { return userName; }
// Setters
public void setGroupName(List<String> groupName) { this.groupName = groupName; }
public void setUserName(String userName) { this.userName = userName;}
}
我使用以下查询返回每个用户的所有组:
```sql SELECT * FROM user_groups; ```
String hql = "select new odatabase.service.beans.UserGroupsBean(userName,(select groupName from UserGroup) ) from User";
但是我得到了以下错误信息:
org.hibernate.hql.ast.QuerySyntaxException: 无法在类 [UserGroupsBean] 上定位适当的构造函数
尽管我有一个构造函数UserGroupsBean(String userName, List < String > groupName)
这是由什么原因引起的?我该如何解决它?
com.example.UserGroupsBean(...)
。 - TinyList<T>
(对于HQL我不确定,但在JPQL/JPA Criteria中是不允许的)。 - Tiny