我们在项目中使用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,但只填充fieldOne
,fieldTwo
,fieldThree
methodB()
返回SomeEntityObject
但仅填写fieldFour
,fieldFive
,fieldSix
我们注意到在创建@SqlResultSetMapping
时,需要定义所有字段,否则会抛出异常。
如果dao方法(具有本机查询)延伸到methodE()
并且我们不想为每个dao方法获得不同的实体返回,该怎么办?我们想要为所有人使用相同的SomeEntity对象。
我的困境是否有解决办法?
sql就是......
SELECT a.someColumn as FieldOne , b.someColumn as FieldTwo , c.someColumn as FieldThree...etc..etc..