Java Spring引导嵌套本机sql查询不工作 @Queryvalue=在消息m中选择m,其中m.masterOrderNo=在消息n中选择n.masterOrderNo,其中n.orderNo=:orderNo,nativeQuery=true 公开名单findAllByOrderNo@ParamorderNo字符串orderNo;

Java Spring引导嵌套本机sql查询不工作 @Queryvalue=在消息m中选择m,其中m.masterOrderNo=在消息n中选择n.masterOrderNo,其中n.orderNo=:orderNo,nativeQuery=true 公开名单findAllByOrderNo@ParamorderNo字符串orderNo;,java,spring,spring-boot,spring-data-jpa,Java,Spring,Spring Boot,Spring Data Jpa,以上代码在我的Jpa存储库中 List inMessages=inMessageRepo.findAllByOrderNoinput.getOrderNo; 上行显示了我如何在应用程序中调用JPA方法。每当执行上述行时,我都会遇到异常 “org.springframework.dao.InvalidDataAccessResourceUsageException”异常 谢谢问题是您根本没有使用本机查询。从…中选择m。。。不是本机SQL 您必须像这样使用SELECT*或SELECT m*,根本没有

以上代码在我的Jpa存储库中

List inMessages=inMessageRepo.findAllByOrderNoinput.getOrderNo; 上行显示了我如何在应用程序中调用JPA方法。每当执行上述行时,我都会遇到异常

“org.springframework.dao.InvalidDataAccessResourceUsageException”异常


谢谢

问题是您根本没有使用本机查询。从…中选择m。。。不是本机SQL

您必须像这样使用SELECT*或SELECT m*,根本没有测试,但SELECT m应该是问题所在:

@Queryvalue=SELECT*FROM in_messagedo m其中m.MASTER\u ORDER\u NO=SELECT n.MASTER\u ORDER\u NO FROM in_messagedo n其中n.ORDER\u NO=:orderNo,nativeQuery=true 公开名单findAllByOrderNo@ParamorderNo字符串orderNo; 编辑:另外,如果您的@Entity名为InMessageDO,请检查您的表名如何,因为您正在尝试在\u MESSAGE table中读取,并且应该在\u messagedo或类似的内容中

此外,查询必须与数据库相同,而不是与对象属性名称相同,因此必须查找MASTER\u ORDER\u NO而不是masterOrderNo。我相信orderNo也有同样的问题


另外,最后一个订单号不需要编辑,这是参数变量。

Hi J.F.谢谢您的回复。我已经尝试了SELECT*和SELECT m*,但仍然得到相同的异常。我已经用我的DB进行了测试,工作正常。更新堆栈跟踪错误的更多详细信息。另外,请检查您的表是否在\u MESSAGE中命名,而不是在\u MESSAGEDO或类似内容中。从堆栈跟踪:java.sql.SQLSyntaxErrorException:ORA-00904:M.MASTERORDERNO:无效标识,我还检查了表名。它位于_MESSAGECheck中,检查行masterorderno在数据库中的名称