5

エンティティ クラスに 2 つの @NamedNativequery を定義したいと考えています。日食を定義するために結ぶとエラーが発生します。

反復不可能な型 @NamedNativeQuery の重複した注釈。1 つのターゲットで複数回使用できるのは、@Repeatable とマークされたアノテーション タイプのみです。

そのエラーから、次のようなエンティティ クラスの @NamedNativeQuery を 2 つ定義することはできないことがわかります。

    @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 (正常に実行される) クエリを実行し、次に 2 番目のネイティブ sql クエリを実行することです (これも同じから実行したい)。これを解決する方法または可能な解決策は何ですか。

この方法で 2 つのネイティブ SQL クエリを実行できない場合、これを達成する方法は他にあります。

4

1 に答える 1

7

このように複数の名前付きクエリを定義できます

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

次に、トランザクションの下のビジネス レイヤーで、これら 2 つのクエリを次々に呼び出すことができます。

2つのエンティティ間の単純な結合であり、選択して表示する方が良い場合は、結合を使用してください。テーブルにこれらの列のインデックスを付けることを常に忘れないでください ;)

于 2016-08-01T16:30:15.273 に答える