【发布时间】:2023-03-22 20:28:01
【问题描述】:
我的实体包含Long id 属性,我从用户那里获得具有id 值的JSON 请求,
当我第一次尝试保存它时,它正在保存,当我尝试在 JPA 保存方法中使用相同的 id 时,它也在保存。我用下面的,
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name = "id", unique = true)
private Long id;
我尝试了以下,
@Table(name = "Person",
uniqueConstraints={
@UniqueConstraint(columnNames = {"id"})})
也不行。我的请求 JSON 如下,如果我在下一个请求中使用相同的 JSON 也会保存。
{
"id":1,
"name":"John"
}
【问题讨论】:
-
您的唯一约束不起作用?
-
在我的情况下,来自用户 JSON 的 id,是的,不起作用。如何使它们独一无二。尝试了上述方法,但没有运气。
-
当您将具有 id 的实体传递给 save 方法时,不会插入新的数据库记录,而是进行更新,因此不会触发 DB 限制。操作是正确的。您可以尝试将 name 设置为唯一键并插入 {"id": 1, "name": "John"} 和 {"id": 2, "name": "John"}
-
试过这个吗? : uniqueConstraints={@UniqueConstraint(columnNames = "column1")}
标签: hibernate jpa spring-data-jpa