0
我在我的數據庫表Foo上有幾條記錄,我需要聚合一個列來合計它的值。JPA NamedQuery與聚合函數和組合使用
表示表的實體是這樣的:
@Entity
@Table(name = "FOO")
@NamedQueries({
@NamedQuery(name = "Foo.total", query = "SELECT f.id, sum(f.someInt) AS
SOME_INT, f.parentId FROM Foo f where f.parentId = 'root' group by
p.parentId"),
@NamedQuery(name = "Foo.findAll", query = "SELECT f from Foo f") })
public class Foo {
@Id
@Column(name = "ID", insertable = false, updatable = false)
private String id;
@Column(name = "PARENT_ID", insertable = false, updatable = false)
private String parentId;
@Column(name = "SOME_INT", insertable = false, updatable = false)
private Integer someInt;
public Foo() {
}
}
如果我把這個在我的DAO服務豆:
entityManager.createNamedQuery("Foo.total", Foo.class).getResultList();
我得到這個錯誤:
Caused by: java.lang.IllegalArgumentException: Cannot create TypedQuery for query with more than one return using requested result type [Foo]
看來是臨時t JPA無法將返回值與對象Foo相匹配。如果是這樣,我該如何使這個工作?
如果我調用其他@NamedQuery「Foo.findAll」,它工作正常。
它工作。非常感謝你 – TiagoH