Java 无法使用springboot和data JPA中的nativeQuery方法访问数据记录
我尝试了Java 无法使用springboot和data JPA中的nativeQuery方法访问数据记录,java,spring,hibernate,jpa,spring-data-jpa,Java,Spring,Hibernate,Jpa,Spring Data Jpa,我尝试了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>
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();
},
public interface UsersRepository扩展了crudepository{
@查询(value=“从用户u中选择u.username”,nativeQuery=true)
列出findByUsername();
},
并通过调用
UsersRepository userRepo;
return (List<Users>) userRepo.findByUsername();
UsersRepository userRepo;
返回(列表)userRepo.findByUsername();
然后我得到的错误是:
“出现意外错误(类型=内部服务器错误,
状态=500)。无法执行查询;SQL[从中选择u.username]
用户[u];嵌套异常为
org.hibernate.exception.sqlgrammareexception:无法执行查询”
有人能帮助解决这个问题吗?您使用的是
nativeQuery
,它总是产生一个投影,您试图将其映射到用户的列表中
这是行不通的,您希望在您的案例中有一个列表。或者,如果您决定在某个时间点在结果中添加更多列,请列出
@Query(value = "select u.username from users u",nativeQuery=true)
List<String> findByUsername();
@Query(value=“从用户u中选择u.username”,nativeQuery=true)
列出findByUsername();
还要确保数据库中的表实际上是cassedusers
,列是username
。如果您使用的是实体名和字段名,那么这是另一件需要更改的事情