1

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

0 回答 0