0

SQL クエリを作成しました。

SELECT ORDER_NUM, STUFF2, STUFF3 FROM table1 t1 WHERE (STUFF3 = 'poor') AND NOT EXISTS (SELECT ORDER_NUM FROM table2 t2 WHERE t1.ORDER_NUM = t2.ORDER_NUM)

クエリは正しく機能し、目的の結果が得られます。@Queryただし、注釈を使用して、Spring データ アプリケーションでこの作業クエリをネイティブ クエリとして使用しようとしています。

@Query(value = "SELECT ORDER_NUM, STUFF2, STUFF3 FROM table1 t1 WHERE (STUFF3 = ?0) AND NOT EXISTS (SELECT ORDER_NUM FROM table2 t2 WHERE t1.ORDER_NUM = t2.ORDER_NUM)", nativeQuery = true)
List<eOrder> findByStuff3(String stuff3);

まったく同じクエリをコピーしてリポジトリに配置しましたが (上記のように)、値が NULL としてバインドされ、レコードが表示されません。このクエリを春のアプリケーションで機能させるために欠けているステップはありますか?

4

2 に答える 2

1

さらなる研究を通じて、私は抱えていた問題を解決することができました。リポジトリで使用したネイティブ クエリは実際に機能します。コードに単純なエラーがあり0、 を に置き換えた1ところ、うまく機能しました。

古いバージョン:

@Query(value = "SELECT ORDER_NUM, STUFF2, STUFF3 FROM table1 t1 WHERE (STUFF3 = ?0) AND NOT EXISTS (SELECT ORDER_NUM FROM table2 t2 WHERE t1.ORDER_NUM = t2.ORDER_NUM)", nativeQuery = true)
List<eOrder> findByStuff3(String stuff3);

修正版:

@Query(value = "SELECT ORDER_NUM, STUFF2, STUFF3 FROM table1 t1 WHERE (STUFF3 = ?1) AND NOT EXISTS (SELECT ORDER_NUM FROM table2 t2 WHERE t1.ORDER_NUM = t2.ORDER_NUM)", nativeQuery = true)
List<eOrder> findByStuff3(String stuff3);

また、 JPQLを使用して同じように機能する別の方法も見つけました。Springアプリケーションでクエリを実行することができました。

@Query(value = "SELECT t1.ORDER_NUM, t1.STUFF2, t1.STUFF3 FROM table1 t1 WHERE (t1.STUFF3 = ?0) AND NOT EXISTS (SELECT t2.ORDER_NUM FROM table2 t2 WHERE t1.ORDER_NUM = t2.ORDER_NUM)", nativeQuery = true)
List<eOrder> findByStuff3(String stuff3);
于 2016-01-06T16:12:04.553 に答える