【发布时间】:2019-07-05 22:10:50
【问题描述】:
为非新实体调用 CrudRepository save() 方法会创建以下 sql:UPDATE card SET id = ?, customer_id = ? ... WHERE id = ?
这会引发异常无法更新身份列“id”
ID由数据库生成
使用的版本:1.0.6.RELEASE & 1.0.9.RELEASE
数据库:mssql
为什么 update 语句试图更新 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> {
}
【问题讨论】:
-
不确定这是否与问题有关,但考虑将您的存储库更改为
CrudRepository<Card, Long>,因为第二个参数应该是 id 列的类型。 -
@Arnaud 感谢您注意到这一点。不幸的是我没有解决问题
标签: java spring-data-jdbc