java - Spring 数据存储库不检查标记为在主实体下级联的类上的 isNew(entity)
问题描述
我有一个父类(为了便于理解和在当地人身上运行,我简化了类结构)
@Entity
@Table(name = "entity_a")
public class EntityA implements Serializable, Persistable<Integer> {
@Id
@Column(name = "id")
private Integer id;
@OneToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "entity_b_id")
private EntityB entityB;
/* Getter and Setter */
@Override
public boolean isNew() {
return isNew;
}
}
@Entity
@Table(name = "entity_b")
public class EntityB implements Serializable, Persistable<String> {
@Id
@Column(name = "id")
private String id;
@Column(name = "name")
private String name;
@OneToOne(mappedBy = "entityB")
private EntityA entityA;
/* Getters and Setters */
@Override
public boolean isNew() {
return isNew;
}
}
当我尝试使用以下 spring 数据存储库持久化新实体 EntityA 时:
public interface EntityARepository extends JpaRepository<EntityA, Integer> {
}
它只检查isNew
onEntityA
但忽略isNew
onEntityB
并且我primary key constraint
在持续操作中不断收到错误
我实现Persistable
接口的原因是因为 EntityB 实际上可以重复很多次所以我想检查它的存在并isNew
在保存之前相应地设置布尔值
如何让 spring 存储库考虑isNew
子类的属性以及标记为级联的属性
解决方案
推荐阅读
- google-sheets - Google 表格上的 QUERY 和 IMPORT Range 函数的此错误消息是什么意思?
- python - 如何在 PyQtChart 中双击获取饼图的值
- ansible - 从临时命令将 Ansible 变量打印到命令行
- python - 通过 psycopg2 连接到 Redshift 失败
- game-center - 回合制 Gamecenter 玩家加入通知
- ruby-on-rails - 从第一个用户注销后,设计 + JWT 没有得到正确的用户
- javascript - 为什么我需要使用传播运算符并使克隆对象在反应中更新对象属性
- azure - 访问来自不同组织的 Azure DevOps Artifact Feed
- sql - 统计查询的has_many记录
- javascript - Electron NPM 应用程序找不到 file:///eel.js,但 python 可以