我尝试使用 nativeQuery
方法在我的存储库文件中使用 Spring Boot
、Spring Data JPA
方法来获取一些数据,而不使用 JPQL,我是添加下面的示例代码:
public interface UsersRepository extends CrudRepository<Users, Long> {
@Query(value = "select u.username from users u",nativeQuery=true)
List<Users> findByUsername();
},
并通过以下方式调用该方法,
UsersRepository userRepo;
return (List<Users>) userRepo.findByUsername();
然后我收到的错误:
"There was an unexpected error (type=Internal Server Error, status=500). could not execute query; SQL [select u.username from users u]; nested exception is org.hibernate.exception.SQLGrammarException: could not execute query".
谁能帮忙解决这个问题吗?
最佳答案
您正在使用nativeQuery
这总是会产生投影,并且您尝试将其映射到 List
的Users
实体。
这不会起作用,你期望的是 List<String>
在你的情况下。或者如果您决定在某个时候在结果中添加更多列,则列出。
@Query(value = "select u.username from users u",nativeQuery=true)
List<String> findByUsername();
还要确保数据库中的表确实是cased users
该列是 username
。如果您使用实体名称和字段名称,那么这是另一件事需要更改。
关于java - 无法在Spring Boot和Data JPA中使用 native 查询方法访问数据记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46408601/