如何将查询映射到非实体类+实体类

时间:2011-02-10 12:37:56

标签: java hibernate jpa

我知道如何在IBatis中查询resultClass映射。

如何将本机查询结果映射到hibernate中混合使用实体类和标量的对象?如何设置参数?

请帮助。

1 个答案:

答案 0 :(得分:2)

使用Hibernate Session API,您可以通过合并addEntity()addScalar()方法来实现:

Query q = s.createSQLQuery(
    "select p.*, count(e.id) as c " +
    "from Project p left join Employee e on p.id = e.project_id " +
    "group by p.id")
    .addEntity(Project.class).addScalar("c");

在JPA中,您可以使用@SqlResultSetMapping

执行此操作
@SqlResultSetMappings(
    @SqlResultSetMapping(name = "projectWithCount"
        entities = @EntityResult(entityClass = Project.class),
        columns = @ColumnResult(name = "c")))

...

Query q = s.createSQLQuery(
        "...", "projectWithCount")