【问题标题】:JPA + Hibernate, Error : com.microsoft.sqlserver.jdbc.SQLServerException: The column name value is not validJPA + Hibernate,错误:com.microsoft.sqlserver.jdbc.SQLServerException:列名值无效
【发布时间】:2023-03-19 20:50:01
【问题描述】:

我正在尝试使用 JPA + Hibernate 来调用带有 @Query 注释的 Store 过程

@Query(value = "exec dbo.getUserById :Id", nativeQuery = true)
User findUserById(@Param("Id) Long id);

并将结果映射到关注实体

@Entity
@Table(name = "users_contact")
public class User{
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name = "id")
    private Integer id;
    private String userName;
    private String value;
}

存储过程只返回 'id' 和 'userName' 列,所以当我调用 findUserById 方法时,Spring 会抛出以下错误

Error : com.microsoft.sqlserver.jdbc.SQLServerException: The column name 'value' is not valid

我猜是因为 Hibernate 尝试在实体中查找“value”属性并映射到“value”属性,但对于此查询,我不需要 value 属性。

项目要求我只使用存储过程访问数据库,所以不能使用 SQL 原生查询。

是否有任何配置可用于指定忽略此属性仅用于调用此存储过程?

【问题讨论】:

    标签: spring hibernate jpa


    【解决方案1】:

    你有:

    private String name;
    

    尝试将“name”更改为“somename”。如果您查看异常,这将导致问题。 “名称”是保留关键字。为简单起见,如果您的实体是 TheUser,则使用类似 -username 而不是 name。我希望你明白了!

    【讨论】:

      猜你喜欢
      • 2022-11-03
      • 1970-01-01
      • 2011-06-26
      • 1970-01-01
      • 2012-11-20
      • 2021-01-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多