【发布时间】:2013-11-16 10:55:54
【问题描述】:
我有一个表 ROOT 和一个表 CHILDREN,其中包含与 ROOT 相关的行。
我想为 ROOT 的每一行检索一个对象,该对象包含 ROOT 对象以及 CHILDREN 表中与 ROOT.id 相关的行数。
这在 SQL 中很容易实现,但我想知道如何在 JPQL 中编写它
在 SQL 中:
选择 r.*, (选择计数(c.i_id) 从 儿童 c 在哪里 c.rootId = r.id) 从根 r;我尝试在 JPA 中重写它,但它一直失败并出现以下错误
Caused by: org.hibernate.HibernateException: Errors in named queries: xxx
Caused by: org.hibernate.hql.internal.ast.QuerySyntaxException: Unable to locate
appropriate constructor on class RootExtended...
Java 类:
包扑通一声; 公共类 RootExtended{ 私有根根; 私人长计数; public RootExtended(final Root root, final Long count) { 这个.root=根; this.count=计数; } // 要遵循的 getter 和 setter }JPQL:
选择 新的 plop.RootExtended(r, (选择 计数(c.id) 从 孩子作为 c 在哪里 c.rootId = r.id ) ) 从 根为 r有什么想法吗?
【问题讨论】:
-
请提供更多的堆栈跟踪,因为重要的部分没有显示。
RootExtended是一个实体吗? -
同时检查您的
RootExtended类是否接收到 Long 作为第二个参数。 -
@AndreiI 不,这不是实体,我已经添加了类代码
-
@GabrielCâmara 我尝试了十几种类型 int、long Integer、Long、Number、Object 等,但没有任何效果:(
-
我真的想要更多的堆栈跟踪/异常,而不是代码。