spring启动嵌套本机sql查询不工作

ycggw6v2  于 2021-07-06  发布在  Java
关注(0)|答案(1)|浏览(292)
@Query(value = "select m from IN_MESSAGE m where m.masterOrderNo=(select n.masterOrderNo from IN_MESSAGE n where n.orderNo=:orderNo)", nativeQuery = true)
public List<InMessageDO> findAllByOrderNo(@Param("orderNo") String orderNo);

上面的代码在我的jpa存储库中。

List<InMessageDO> inMessages = inMessageRepo.findAllByOrderNo(input.getOrderNo());

上面一行显示了我是如何在应用程序中调用jpa方法的。每当上面这一行被执行时,我就会得到一个例外。
'org.springframework.dao.invaliddataaccessresourceusageexception'异常。
谢谢您

yeotifhr

yeotifhr1#

问题是您根本没有使用本机查询。 SELECT m FROM ... 不是本机sql。
你必须使用 SELECT * 或者 SELECT m.* 像这样(根本没有测试,但是 select m 应该是问题所在):

@Query(value = "SELECT * FROM in_messagedo m WHERE m.MASTER_ORDER_NO = (SELECT n.MASTER_ORDER_NO FROM in_messagedo n WHERE n.ORDER_NO = :orderNo)", nativeQuery = true)
public List<InMessageDO> findAllByOrderNo(@Param("orderNo") String orderNo);

编辑:如果你的 @Entity 被命名为 InMessageDO 检查您的表名如何,因为您正在尝试读取 IN_MESSAGE table,应该是 in_messagedo 或者类似的东西。
此外,查询必须与db相同,而不是与对象属性名相同,因此必须查找 MASTER_ORDER_NO 而不是 masterOrderNo . 而且我支持 orderNo 也有同样的问题。
还有,最后一个 orderNo 不需要编辑,这是参数变量。

相关问题