下面的这个查询不起作用,它给我生成了一个异常
@Query(value = "SELECT * FROM account WHERE account_no = ?1",
nativeQuery = true)
Account findByAccountNo(String accountNo);
"message": "could not prepare statement; SQL [SELECT * FROM account WHERE account_no = ?]; nested exception is org.hibernate.exception.SQLGrammarException: could not prepare statement",
当我使用MySQL数据库时,查询运行良好。但现在我正在使用H2数据库,它突然不起作用了。为什么?我该如何解决这个问题?
最好使用JPA。
如果你仍然想使用nativeQuery,可以这样使用:
@Query(value = "SELECT * FROM account WHERE account_no = :account_no",
nativeQuery = true)
Account findByAccountNo(@Param("account_no") String accountNo);
我猜在这里,但参数语法"?1〃;可能对H2无效。
这里不需要使用本机查询,如果您使用Jpa语法,它应该可以工作。
此外,您根本不需要在这里指定查询——Spring Jpa应该为您生成查询。