【发布时间】:2021-11-08 01:37:21
【问题描述】:
是否可以编写一个包含多个自定义构造函数的TypedQuery?例如,如果您要创建包含 id 和另一个对象的对象,例如:
TypedQuery<ChapterWithBookId> query = em.createQuery(
"SELECT new " + ChapterWithBookId.class.getName() + "(book.id, new example.Chapter(chapter.id, "
+ "chapter.size"
+ ")) "
+ "FROM " + Book.class.getName() + " AS book JOIN " + Chapter.class.getName() + " AS chapter WHERE "
+ "book.id IN :ids", ChapterWithBookIds.class)
.setParameter("ids", ids);
不管这个例子是否有实际意义,这个查询应该返回一个ChapterWithBookId类型的对象列表,在该列表中,对于所有具有id的书籍的每一章都有一个对象,包含在id列表中设置为参数。
【问题讨论】:
-
您需要使用完全限定名称,例如
com.foo.bar.MyClass。除此之外,我不明白你的问题是什么。该代码示例是否不起作用或者您到底在问什么? -
@BenjaminMaurer 我只是试图使示例尽可能短(
example.Chapter是完全限定名称)。该代码示例不起作用,因为它在new关键字处给出了语法错误异常。似乎只有在SELECT语句之后才支持新的,但是如果我添加第二个SELECT语句,它也不起作用。