У меня есть две таблицы, сопоставленные объектам User
и Group
.org.hibernate.hql.ast.QuerySyntaxException: невозможно найти соответствующий конструктор
@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;
}
}
Один User
может иметь много Group
с. Мне нужно моделировать их для того, чтобы отобразить пользователей со всеми их группами в виде таблицы в интерфейсе, как показано ниже:
+-------+----------------------+
| 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;}
}
Я использовал этот запрос, чтобы вернуться все группы для каждого пользователя:
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)
Как это вызвано и как я могу решить эту проблему?
Вам нужно получить полное имя класса в выражении конструктора в HQL, например 'com.example.UserGroupsBean (...)'. – Tiny
да, конечно, я пишу полное имя класса в своем коде, ошибка в том, что он не находит конструктор с этими свойствами (String и List) –
'List' может не поддерживаться в таких запросах (не уверен о HQL, но в критериях JPQL/JPA, это запрещено). –
Tiny