Hibernate / JPA将本机查询的结果映射到非实体持有实体

Spektakulatius:

我确实有3个实体,想交叉加入。因为我不需要为此创建新的实体,所以我只想通过使用本机查询获取来映射:

EntityA{
    ...
    String someValue;
}

EntityB{
    ...
    String someValue;
}

EntityC{
    ...
    String someValue;
}

和交叉连接的对象

CrossJoinedFoo{
    EntityA entityA;
    EntityB entityB;
    EntityC entityC;
}

我使用它像:

private static final String _SELECT_CROSS_JOIN_ENTITIES = "SELECT * FROM "
            + "EntityA"
            + ", "
            + "EntityB"
            + ", "
            + "EntityC"
            + " WHERE (1=1) "
            + " AND " + "EntityA.someValue = :someValue"
            + " AND " + "EntityB.someValue = :someValue"
            + " AND " + "EntityC.someValue = :someValue";

Query query = entityManager.createNativeQuery(_SELECT_CROSS_JOIN_ENTITIES);
query.setParameter(":someValue", "foo");

我该如何实现这种行为?

Maciej Kowalski:

您可以进行HQL查询并使用结果类策略。只要记住要在CrossJoinedFoo中添加一个构造器即可以适当的顺序接受3个实体:

private static final String _SELECT_CROSS_JOIN_ENTITIES = 
            "SELECT new my.package.CrossJoinedFoo(a,b,c) FROM "
            + "EntityA a"
            + ", "
            + "EntityB b"
            + ", "
            + "EntityC c"
            + " WHERE (1=1) "
            + " AND " + "a.someValue = :someValue"
            + " AND " + "b.someValue = :someValue"
            + " AND " + "c.someValue = :someValue";

Query query = entityManager.createQuery(_SELECT_CROSS_JOIN_ENTITIES);
query.setParameter(":someValue", "foo");

List<CrossJoinedFoo> result = query.list();

只要记住将软件包更改为适当的软件包即可。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何使用Hibernate将SQL查询的结果最好地映射到非实体Java对象?

Hibernate / JPA:将实体映射到不同的数据库

将JSON对象映射到Hibernate实体

Spring Data JPA将本机查询结果映射到非实体POJO

JPA / HIBERNATE:如何查询返回非实体对象或带有内部非实体对象的对象列表?

为什么我的实体表没有映射到JPA Hibernate中?

* .PoolStateResult | javax.persistence.PersistenceException:org.hibernate.MappingException:未知实体:it。将结果映射到DTO(不是实体)中

使用Hibernate将实体映射到表时出现BeanCreationException

使用Hibernate将PostgreSQL的refcursor映射到Java实体

将PostgreSQL JSON列映射到Hibernate实体属性

使用jpa和hibernate查询未映射的实体

JPA 本机查询结果集映射到具有子类的实体类

Springboot Hibernate 实体映射

共享所有 Hibernate 实体的公共查询结果

将两个相同的表(相同的架构...)映射到Hibernate中的相同实体

如何将numeric(13,3)[]数据库列映射到Hibernate实体字段?

JPA Hibernate 查询与本机查询

Hibernate本机SQL查询检索实体和集合

为什么在本机查询中,Hibernate延迟加载的子实体?

从Hibernate到EclipseLink的JPA实体

如何使用jpa / hibernate为实体映射字段定义索引?

Hibernate JPA映射相同类型的多个实体

Hibernate查询与地图属性实体

Hibernate Search查询多个实体

将JPA或Hibernate投影查询映射到DTO(数据传输对象)

Spring Hibernate-查询以将其他列映射到我的实体-java.sq.SQLException:找不到列

如何将本机查询的结果集映射到实体中的变量

Hibernate queryexception:在JPA查询期间无法解析实体属性

将AngularJs对象映射/导航到Hibernate实体