[英]Spring Data JDBC Lookup Tables Cascading Deletes
我有一个类似于下面的结构。 当父/子被删除/保存/更新时,我只需要检索查找数据而不是删除/保存/更新它。 查找表中的数据为 static。 我正在使用 spring 数据 jdbc 和 java 11 和数据库的 postgres。 我知道这是一个人为的例子,但我不允许发布实际代码。
任何帮助将不胜感激! 谢谢!
@Data
@Table("parent")
public class ParentDTO {
@Id
private long parentId;
private Date createdAt;
@MappedCollection(idColumn="parent_id", keyColumn="parent_id")
private Set<ChildDTO> children;
String name;
}
@Data
@Table("child")
public class ChildDTO {
@Id
private long childId;
private Date createdAt;
private long parentId;
String name;
@MappedCollection(idColumn="lookup_id", keyColumn="lookup_id")
private LookupDTO lookupDTO;
}
@Data
@Table("lookup")
public class LookupDTO {
@Id
private long lookupId;
String name;
private Date createdAt;
}
Cascade 不是 JPA/Spring-Data 中可以完全删除的可选功能。 实体关系将有一个默认的级联选项,因为它是底层数据库模式的反映。
在您的示例中,如果 ParentDTO 被删除,那么具有外键( ChildDTO.parentId
)的 ChildDTO 如何存在于数据库中? Spring-Data JPA 正好反映了这种设计。
如果你想确保没有人删除 ParentDTO 或其他实体,那么你可以做几件事:
这里有一些想法:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.