其他分享
首页 > 其他分享> > 春季-在同一实体类上运行两个@NamedNativeQuery查询

春季-在同一实体类上运行两个@NamedNativeQuery查询

作者:互联网

我想在实体类上定义两个@NamedNativequery.当试图定义日食时会出现错误.

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

从该错误中,我知道我们无法定义两个定义实体类的两个@NamedNativeQuery

    @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);


   }

senario是我要运行第一个本机sql(运行正常)查询,然后运行第二个本机sql查询(想要从相同的位置运行此查询).如何解决此问题或可能的解决方案.

如果这种方式我无法运行两个本机sql查询,那么还有其他方法可以实现这一点.

解决方法:

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

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

然后,在交易下的业务层中,您可以依次调用这两个查询,

如果它是两个实体之间的简单联接,并且选择并显示更好,则使用联接的联接.永远记得在表中有那些列索引;)

标签:spring-data-jpa,spring-data,named-query,spring,spring-repositories
来源: https://codeday.me/bug/20191026/1939413.html