嗨,我要弄清楚如何从HQL中的createQuery返回包含列表的Projection。我的实体包含我在投影/ DTO中也要拥有的元素集。
实体
data class Entity (
@Id
val id: Int,
val name: String?,
val elements: MutableSet<Elements> = mutableSetOf(),
... ... ... .. .. .. .. ...
)
DTO
data class ClassWithProjection (
val id: Int,
val name: String?,
val elements: Set<Elements> = emptySet()
)
存储库配置:
entityManager.createQuery(
"""SELECT new com.package.ClassWithProjection(t.id, t.name, t.elements)
FROM Table t
WHERE t.id IN :ids
""", ClassWithProjection::class.java
).setParameter("ids", ids)
.resultList
但是执行查询时出现错误:
o.h.e.j.s.SqlExceptionHelper-错误:“或”附近的语法错误。 InvalidDataAccessResourceUsageException:无法提取ResultSet。 SQL [n / a];嵌套异常为 org.hibernate.exception.SQLGrammarException:无法提取 ResultSet]