请教个关于 JPA 级联保存的问题

2019-07-11 00:33:53 +08:00
 WeiPong

请教各位大佬关于 JPA 的问题,有点菜,几个小时没想出来怎么做,搜索信息也没找到相关的解决方法。

两张表,一张货架区域表 Area (一端),一张货架表 Pod (多端)。

Pod 中的 area 设置 @ManyToOne 对应 areaid,设置及联 cascadeType 后,保存时,如果区域表中已存在 A 区域,货架 P1 的区域为区域 A,接着添加或者更新货架 P2 的区域同样没为 A 区域的话,数据库中会有两条 ID 不用,属性一样的区域 A 信息。

怎么才能实现不会添加第二条区域 A 的信息,直接给 P2 的区域信息设置为已有的区域 A 呢?

3366 次点击
所在节点    Java
5 条回复
nutting
2019-07-11 08:39:51 +08:00
得以操作 Area 为准吧
liuxey
2019-07-11 10:00:17 +08:00
用 aRepository.getOne(id) 获取个代理对象,放到 Pod 对象的 a 属性中,最后 save(pod)
adzchao
2019-07-11 10:35:10 +08:00
同楼上
WeiPong
2019-07-11 10:37:04 +08:00
@liuxey
@adzchao
是的,昨晚最后也是做了这样的操作成了,还没弄太明白这样子的原理,今天有时间得好好研究下。
EastLord
2019-07-25 16:16:34 +08:00
Area a = new Area();
a.setId(xxx);

p.setArea(a);

aRepository.save(a);

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/581867

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX