0

为非新实体调用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> {
}
4

2 回答 2

2

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

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

注意:我已经看到您提到的仅与尚未完全支持的 MS-SqlServer 的异常。

于 2019-07-05T14:00:34.233 回答
-1

看来您还没有为 ID 设置 id generation Strategy 。添加这个并尝试它是否有效。

@GeneratedValue(strategy = GenerationType.AUTO) 
于 2019-07-05T07:44:51.383 回答