在本机查询中重用JPA实体的字段

时间:2016-04-15 09:48:03

标签: jpa jpa-2.0 nativequery

我们在项目中使用JPA,但有些复杂的查询需要在原生查询中直接完成。我们为此使用JPA原生查询,如下面的

Query query = em.createNativeQuery(sql.toString(), "SomeEntityQuery");

然后我们创建了一个名为SomeEntity的实体,其代码如下所示

@SqlResultSetMapping(
        name="SomeEntityQuery",
        entities={
            @EntityResult(
                entityClass=SomeEntity.class,
                fields={
                    @FieldResult(name="fieldOne", column="FieldOne"),
                    @FieldResult(name="fieldTwo", column="FieldTwo"),
                    @FieldResult(name="fieldThree", column="FieldThree")
                }
            )
        }
    )


@Entity
public class SomeEntity{

//fields listed below

我的问题是,如果我们有一个dao方法,它具有以下我们翻译为本机查询的方法

methodA()返回SomeEntityObject,但只填充fieldOnefieldTwofieldThree

methodB()返回SomeEntityObject但仅填写fieldFourfieldFivefieldSix

我们注意到在创建@SqlResultSetMapping时,需要定义所有字段,否则会抛出异常。

如果dao方法(具有本机查询)延伸到methodE()并且我们不想为每个dao方法获得不同的实体返回,该怎么办?我们想要为所有人使用相同的SomeEntity对象。

我的困境是否有解决办法?

sql就是......

  SELECT a.someColumn as FieldOne , b.someColumn as FieldTwo , c.someColumn as FieldThree...etc..etc..

0 个答案:

没有答案