V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
WeiPong
V2EX  ›  Java

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

  •  
  •   WeiPong · 2019-07-11 00:33:53 +08:00 · 3390 次点击
    这是一个创建于 1992 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

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

    p.setArea(a);

    aRepository.save(a);
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   6126 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 44ms · UTC 02:30 · PVG 10:30 · LAX 18:30 · JFK 21:30
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.