spring - 如果在 json 中删除,则使用带有 spring 的 @version 不起作用
问题描述
我们有一个 DTO
@Getter
@Setter
@NoArgsConstructor
@Table(name = "agenda")
@Entity
@EqualsAndHashCode(of = "id")
public class Agenda implements Serializable {
private static final long serialVersionUID = -4588716014801416553L;
@Id
private String id;
@Version
private Long version = 1L;
@Column(name = "nombre")
private String name;
@JsonIgnore
@OneToMany(mappedBy = "agenda", targetEntity = Timetable.class)
private Set<Timetable> timetables;
}
在这个 dto 中,我们添加了 javax.persistence 的 @version,如果我们向控制器发送带有字段版本的 json,则运行良好,否则在尝试保存到数据库时会失败。
例如,如果我们发送:
"agenda": {
"name": "Agenda 1",
"id": "agenda1",
"version": 1
},
工作没有任何问题,但是如果我们删除版本会引发异常,所以我的问题是,版本字段是否总是强制性的?
错误是:无法执行语句;SQL [不适用];约束 [horario_id]; 嵌套异常是 org.hibernate.exception.ConstraintViolationException: could not execute statement",
先感谢您。
解决方案
问题是我们使用了错误的导入,我们必须使用
import org.springframework.data.annotation.Version;
代替
import javax.persistence.Version;
推荐阅读
- python - 如何将系列值添加到日期/日期时间对象?
- python - 如何用 pip 安装 PIL?
- restsharp - RestSharp 访问 API 的方法
- javascript - 我无法在功能性 React 组件中使用带有 useEffect 的内联“if”吗?
- javascript - Java Script 按值过滤嵌套对象属性
- c# - NullableAttribute 在另一个模块中声明,需要导入 - ILRepack
- c# - Razor-pages 通过 HttpClient 使用凭据上传文件
- python - 在多索引熊猫数据框中添加每个级别 2 索引的总数
- php - Laravel 安装程序在创建新项目时抛出错误
- android - android:nextFocusDown 在 viewpager 中不起作用