运行 同一实体上的两个 @NamedNativeQuery 查询 Class

Run two @NamedNativeQuery query on same entity Class

我想在实体 class 上定义两个 @NamedNativequery。绑定定义eclipse时报错。

Duplicate annotation of non-repeatable type @NamedNativeQuery. Only annotation types marked @Repeatable can be used multiple times at one target.

从那个错误中,我知道我们不能定义实体的两个定义两个@NamedNativeQuery class like

    @Entity
    @Table(name = "abc")
    @NamedNativeQuery(name = "ABC.getSomeMethod1" query = "some_query",resultSetMapping ="abcDTO")//1st name query
   // @NamedNativeQuery(name = "some_name" query = "some_query",resultSetMapping ="some_dto")//try to define second query , but gives error
    public class ABC {

      }

我在 dao 层使用 spring 存储库来调用与此查询绑定的方法

  public interface SomeInterface extends JpaRepository<ABC, Long> {


    @Query(nativeQuery =true)
   List<ABCDTO> getSomeMethod1(@Param("someParam1")  long someParam1, @Param("someParam2") String someParam2);


   }

我想运行第一个原生sql(运行很好)查询然后运行第二个原生sql查询(想要 运行 这也来自同一个)。如何解决这个问题或可能的解决方案是什么。

如果我无法通过这种方式 运行 两个本机 sql 查询,那么是否还有其他方法可以实现此目的。

您可以像这样定义多个命名查询

@NamedNativeQueries({
    @NamedNativeQuery(name = "ABC.getSomeMethod1" 
                      query = "some_query",resultSetMapping ="abcDTO"
    ),
  @NamedNativeQuery(name = "some_name" 
     query = "some_query",resultSetMapping ="some_dto"
    )
})

那么在事务下的业务层就可以依次调用这两个查询了,

如果它是两个实体之间的简单连接并且 select 并且显示更好,请使用连接。永远记得在 Table ;)

中设置这些列的索引