java - spring-data-jdbc 更新存储库保存方法更新 ID

标签 java spring-data-jdbc

为非新实体调用CrudRepository save()方法会创建以下sql:UPDATE card SET id = ?, customer_id = ? ...哪里 id = ?

这会引发异常无法更新身份列“id”

ID由数据库生成

使用版本:1.0.6.RELEASE & 1.0.9.RELEASE

数据库:mssql

为什么更新语句尝试更新 ID 列,因为它是主键?

实体:

import org.springframework.data.annotation.Id;
import org.springframework.data.relational.core.mapping.Column;
import org.springframework.data.relational.core.mapping.Table;

@Table("card")
public class Card {

    @Id
    private Long id;

    @Column("customer_id")
    private String customerId;
...

存储库:

public interface CardRepository extends CrudRepository<Card, String> {
}

最佳答案

这听起来像https://jira.spring.io/browse/DATAJDBC-262该问题已在 1.1.M1 版本中修复并发布,该开发分支的当前版本是 1.1.RC1

切换到该版本应该可以解决问题。

注意:我只在 MS-SqlServer 中看到了您提到的异常,该异常尚未得到完全支持。

关于java - spring-data-jdbc 更新存储库保存方法更新 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56898593/

相关文章:

java - 从命令行编译类时出错

java - 我是否需要为我的 Spring Data JDBC 项目配置以下示例中的 bean?

java - Spring官方文档中的问题

java - 如何将新的 JSONObject 添加到 json 文件中现有的 JSONArray

java - 在前端编程线程对话的正确方法

java - 插入语句的Postgresql错误代码

java - Maven 插件执行 ID

postgresql - 如何使用 spring-data-jdbc 读/写 postgres jsonb 类型?

java - Multi-Tenancy Spring Data JDBC

spring-data-jdbc - 如何在 spring-data-jdbc 中指定表模式