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,并且没有显示任何记录。我是否缺少使此查询与我的 Spring 应用程序一起使用的步骤?

4

2 回答 2

1

通过进一步的研究,我能够解决我遇到的问题。我在存储库中使用的本机查询确实有效,代码中有一个简单的错误,而不是 a 0,我替换为 a1并且效果很好!

旧版:

@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 回答
0

尝试将您的查询更改为:

@Query(value = "SELECT ORDER_NUM, STUFF2, STUFF3 FROM table1 t1 WHERE (STUFF3 = :stuff3) AND NOT EXISTS (SELECT ORDER_NUM FROM table2 t2 WHERE t1.ORDER_NUM = t2.ORDER_NUM)", nativeQuery = true) 列出 findByStuff3(@参数(“stuff3”)字符串 stuff3);

于 2016-01-06T15:09:40.273 回答