【问题标题】:Error when run a query to get specific fields using JPA and Spring使用 JPA 和 Spring 运行查询以获取特定字段时出错
【发布时间】: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&lt;User&gt;改成List&lt;Long&gt;的ID类型
  • 询问异常时,请务必发布异常的完整堆栈跟踪以及相关代码。您还应该学习 JPQL 并停止使用 SQL 进行此类查询。
  • 我不能告诉你如何解决它,但我知道它为什么会来。因为我也面临同样的问题。
  • 您拥有“用户”实体,其中您使用@column 注释定义了列名。据我所知,spring 不喜欢在列名中使用下划线。当然,您已经声明了一些列名称差异,并且 spring 正在解决。

标签: java sql spring spring-data-jpa


【解决方案1】:

有很多案例:

  1. 区分大小写
  2. 检查您搜索的列名是否与数据库中的列名相同
  3. 不要使用“as”作为别名列名

因为,我面临同样的问题。我在数据库中的列 user_id 与我在 spring 查询中使用的不同。

之前: 从表中选择用户 ID。

之后: 从表中选择 user_id

【讨论】:

    猜你喜欢
    • 2019-05-29
    • 2019-03-27
    • 2023-03-22
    • 1970-01-01
    • 2015-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-01
    相关资源
    最近更新 更多