- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有 2 个表映射到实体 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;
}
}
一个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: Unable to locate appropriate constructor on class [UserGroupsBean]
虽然我有一个构造函数UserGroupsBean(String userName, List < String > groupName)
这是怎么引起的,我该如何解决?
最佳答案
JPQL 构造函数表达式只支持平面结果,所以你运气不好。您可以使用类似 SELECT u.userName, g.groupName FROM User u JOIN u.userGroups g
的查询,但您必须自行减少结果集.
用Blaze-Persistence Entity Views 可以很好地完成您想做的事情.这里有一些示例代码。
@EntityView(User.class)
public interface UserGroupsBean {
// The id of the user
@IdMapping("id") int getId();
String getUserName();
@Mapping("userGroups.name")
List<String> getGroupNames();
}
这本质上是一个带有一些元数据的 DTO。下面是查询代码:
EntityManager entityManager = // jpa entity manager
CriteriaBuilderFactory cbf = // query builder from Blaze-Persistence
EntityViewManager evm = // manager that can apply entity views to query builders
CriteriaBuilder<User> builder = cbf.create(entityManager, User.class);
List<UserGroupsBean> result = evm.applySetting(
builder,
EntityViewSetting.create(UserGroupsBean.class)
).getResultList();
这将生成一个类似于此的查询
SELECT u.id, u.userName, g.groupName FROM User u JOIN u.userGroups g
并会自动将结果映射到 DTO 中。
关于hibernate - org.hibernate.hql.ast.QuerySyntaxException : Unable to locate appropriate constructor,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32818321/
我有一个像这样的 UserAssignmentRole 类: @Data @Entity public class UserAssignmentRole { ... @Enumerat
尝试从 Java 服务层进行简单的选择,这是我的模型: import java.io.Serializable; import javax.persistence.Column; import jav
我有以下类(class): public class MyClass { private List _myList = new List(); public virtual strin
当我尝试使用 Hibernate 创建任何数据库查询时,我犯了同样的错误: Error code 道法: @Override public List findAll() { openCurre
我正在关注这个Tutorial 。我添加了另一个 DAO,用于检索 admin_roles 表。该方法如下所示 public List findAllAdminRoleByUserName(Strin
我目前正在从事一个实用程序项目,该项目将帮助我管理应用程序的用户(一个用户有一个或多个角色,一个角色有一个或多个权限)。我是 Hibernate 的新手,不知道为什么会遇到以下问题: ERROR [h
我目前正在从事一个实用程序项目,该项目将帮助我管理应用程序的用户(一个用户有一个或多个角色,一个角色有一个或多个权限)。我是 Hibernate 的新手,不知道为什么会遇到以下问题: ERROR [h
当我尝试执行下一个 HQL 查询时,出现下一个错误: org.hibernate.hql.internal.ast.QuerySyntaxException: Unable to locate app
我已经创建了一个 Hibernate 配置 maven 项目(使用 maven-shade-plugin 构建)以允许我的代码库使用一个统一的“数据库类”。但是,当从正在运行的项目外部调用时,该类似乎
是的,我知道有一些关于此错误的帖子,但没有一个对我有帮助。我的 hql 查询出现此错误: @SuppressWarnings("unchecked") @Override public List ge
我用 spring-boot 开始了一个新项目,以 MySQL 作为数据库系统。但是当我从数据库中读取数据时,我得到了 org.hibernate.hql.internal.ast.QuerySynt
我查询了 3 个具有 HQL 类的表。存在一些一对多的关系。 我的数据库或我的实体类都没有问题.. 我有一些 hibernate DAO 类查询,除了这个以外其他都很好.. jasperreport
我一直在玩一个非常简单的 JPA 示例,并试图将其调整为现有数据库。但我无法克服这个错误。 (下。)它只是一些我没有看到的简单的东西。 org.hibernate.hql.internal.ast.Q
我从前端发送一个值来搜索我的实体 Producto 的两个属性。该属性是Codigo 和Description。 问题是当 TypedQuery typedQuery = em.createQuery
完整错误消息: 11:49:51,896 INFO [stdout] (http-localhost-127.0.0.1-8080-1) javax.ejb.EJBException: java.la
我是 JPA 新手,正在尝试创建 EJB 3.0 + JPA( hibernate )应用程序。当我将数据持久保存到数据库时出现异常。 sessionBean方法: @PersistenceC
我的Spring数据查询是: @Query("FROM NewsFeed nf where dealRoom.id =:dealRoomId and (fileFolder IN :folders o
我收到这个错误: Caused by: javax.ejb.EJBException: java.lang.IllegalArgumentException: org.hibernate.hql.in
在使用 Hibernate 构建查询时,我注意到一些相当奇怪的事情。如果我为 ORDER BY 子句使用顺序命名参数,Hibernate 会抛出一个 QuerySyntaxException(冒号前缀
我收到一个错误,如下所示: java.lang.IllegalArgumentException: org.hibernate.hql.ast.QuerySyntaxException: Direct
我是一名优秀的程序员,十分优秀!