【发布时间】:2017-11-10 18:25:25
【问题描述】:
我正在尝试使用 Spring 和 JPA 返回特定列,为此我创建了一个查询,但仅当我正在查询的表上有数据时它才返回此错误
java.sql.SQLException:列名无效
@Repository
public interface UserRepository extends CrudRepository<User, Long>{
@Query(value = "SELECT ID FROM users", nativeQuery = true)
public List<User> findNameAndId();
}
当我尝试将列 ID 替换为 * 时,即使使用表中的数据也可以正常工作,但我不想检索所有列。
我尝试查询其他列,所以问题不是我的ID 列。我确定列名和查询是正确的,因为我直接在 SQL Developer 上运行它并工作。
【问题讨论】:
-
你必须把
List<User>改成List<Long>的ID类型 -
询问异常时,请务必发布异常的完整堆栈跟踪以及相关代码。您还应该学习 JPQL 并停止使用 SQL 进行此类查询。
-
我不能告诉你如何解决它,但我知道它为什么会来。因为我也面临同样的问题。
-
您拥有“用户”实体,其中您使用@column 注释定义了列名。据我所知,spring 不喜欢在列名中使用下划线。当然,您已经声明了一些列名称差异,并且 spring 正在解决。
标签: java sql spring spring-data-jpa