spring-data-jpa 作为主键的文档字段无效

6psbrbz9  于 2022-11-10  发布在  Spring
关注(0)|答案(1)|浏览(139)

我有一个“document”字段,它需要是主键并且必须是唯一的,但是每次我对同一个文档执行POST时,它都会更新文档,并且不会发送BAD_REQUEST
我的实体:

@Entity
@Data
@NoArgsConstructor
@AllArgsConstructor
@Table(uniqueConstraints={@UniqueConstraint(columnNames={"document"})})
public class Cliente {

    @Id
    @Column(unique=true, updatable = false)
    @NotBlank @NotNull
    private String document;
    @NotBlank
    private String name;
    @NotNull
    private LocalDateTime date;
}

当我尝试用同一个文档进行新的POST时,它只会更新保存在数据库中的内容。

“休眠:更新客户端设置日期=?,名称=?,其中文档=?"

dwbf0jvd

dwbf0jvd1#

问题在于,当您调用Repository#save时,SpringDataJPA假设您希望在传入的实体对象具有id属性集时更新现有的实体。如果您希望确保Hibernate尝试执行插入操作,则必须在代码中注入EntityManager,而不是调用EntityManager#persist,在这种情况下,您将得到一个约束冲突异常,正如您所期望。

相关问题