我们在项目中使用 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..