hibernate - 休眠不生成具有某些列的插入语句
问题描述
我有 3 个实体相互交互,如下所述。
Entity_A {
@Id
private String id;
@OneToMany(cascade=CascadeType.ALL, mappedBy="a", orphanRemoval=true)
private List<Entity_B> b;
@OneToMany(cascadeType.ALL, mappedBy="a", orphanRemoval=true)
private List<EntityRelationship_A_B> relationship;
}
@Embeddable
EntityRelationship_A_B_Id {
@Column(name="a_id")
private String a_id;
@Column(name="b_id")
private String b_id;
@Column(name="relationship_id")
private String relationship_id;
}
EntityRelationship_A_B {
@EmbeddedId
private EntityRelationship_A_B_Id id;
@ManyToOne
@JoinColumn(name="a_id", referencedColumn="a_id", insertable=false, updateable=false)
private Entity_A a;
@OneToOne(cascade = CascadeType.ALL, mappedBy="relationship", orphanremoval = true)
private Entity_B b;
}
@Embeddable
Entity_B_Id {
@Column(name="a_id")
private String a_id;
@Column(name="b_id")
private String b_id;
//std methods
}
Entity_B {
@EmbeddedId
private Entity_B_Id id;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "a_id", referencedColumn = "a_id", insertable = false, updateable = false)
private Entity_A a;
@OneToOne(fetch = fetchType.LAZY)
@JoinColumn(name = "a_id", referencedColumn="a_id", insertable=false, updateable=false)
@JoinColumn(name="b_id", referencedColumn="b_id", insertable=false, updateable=false)
@JoinColumn(name="relationship_id", referencedColumn="relationship_id", insetable=false, updateable=false)
private EntityRelationship_A_B relationship;
// ....
}
ServiceImpl {
save (...) {
Manually populate and set Entity_B_Id into individual instance_A.instance_B
Manually populate and set EntityRelationship_A_B_Id into individual instance_A.instance_A_B
//...finally save the top level entity...
}
}
由于数据的性质,相同的实例Entity_B
不能与 BothEntity_A
和EntityRelationship_A_B
.
通过为拥有方实现双向引用,我可以看到EntityRelationship_A_B
具有适当值的保存a_id, b_id, relationship_id
;
但 Entity_B
总是与null
for一起存储relationship_id
;事实上,插入语句Entity_B
从不包含relationship_id
列。但是,我可以通过查看运行时值来保证EntityRelationship_A_B
引用设置正确EntityRelationship_A_B.Entity_B
。
我究竟做错了什么?
解决方案
推荐阅读
- java - 如何将新的 JSONObjects 添加到 json 文件中的现有 JSONArray
- python - 使用节点{链表方式}难以理解具有邻接表表示的图
- postgresql - 时间尺度上的连续聚合
- javascript - 函数式编程:在 PrototypePassed JavaScript 上实现 map
- laravel - 有没有办法通过使用重写规则来隐藏和重定向 url?
- mapbox - Mapbox 方向 - 起点错误
- django-rest-framework - 在 Django Rest Auth 中使用超级用户帐户登录时,EmailAddress 匹配查询不存在
- javascript - Javascript排序函数错误:'算术运算的右侧必须是'any','number','bigint'或枚举类型'
- php - 如何防止其他网站或域下载我们的内容并通过 CURL 在其域上显示?
- wpf - ListBox ItemTemplate 中的按钮未选择项目 wpf mvvm