开发者社区> 问答> 正文

Jpa 存储时不进行级联更新? 400 报错

Jpa 存储时不进行级联更新? 400 报错

@S2JH 你好,想跟你请教个问题:

  customer 和 shop 的主键互为对方的外键,多个customer可以对应同一个shop,代表shop拥有多个客服 和店长。一个shop只能对应一个customer,代表shop只能有一个店长。在customer类:

@MetaData("美月淘集市店铺")
    private C2cShopInfo c2cShopInfo;

    @ManyToOne(cascade = CascadeType.DETACH)
    @JoinColumn(name = "c2c_shop_info_sid")
    @JsonProperty
    @Audited(targetAuditMode = RelationTargetAuditMode.NOT_AUDITED)
    public C2cShopInfo getC2cShopInfo() {
        return c2cShopInfo;
    }

    public void setC2cShopInfo(C2cShopInfo c2cShopInfo) {
        this.c2cShopInfo = c2cShopInfo;
    }



现在需要在shop中定义关联的customer,因为我想在保存shop时,不对customer进行级联更新,只是对外键值存储,这时在shop中如何注解该customer呢?试了很多注解,在shop 选择customer时,总是出错。希望你能给我一点提示,在shop类:

@MetaData("关联客户")
    private CustomerProfile customerProfile;

    @OneToOne(cascade = CascadeType.DETACH)
    @JoinColumn(name = "customer_profile_sid")
    @JsonProperty
    public CustomerProfile getCustomerProfile() {
        return customerProfile;
    }

    public void setCustomerProfile(CustomerProfile customerProfile) {
        this.customerProfile = customerProfile;
    }




展开
收起
爱吃鱼的程序员 2020-06-05 12:09:35 937 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

    框架采用Jackson进行对象JSON数据序列化,对于互相指向的对象需要合理设置JsonIgnore注解处理递归循环问题。
    ###### @S2JH  哎呀!我好像知道之前为啥总错了,貌似是在 引用CascadeType 时,引用了错误的包,正确的应该是引用javax.persistence.CascadeType###### @S2JH  在涉及外键相关属性进行更新存储时,S2JH 框架处理经常会出错。比如上述的客户与店铺的关系,在翻页时,会进入无限递归,导致页面无法正确显示。还有一种是自身关联的树状数据结构。当设置其父亲节点为空时,在保存时出现异常。 @S2JH  您对这个情况了解吗?有什么解决方案吗?######CascadeType.DETACH你这个属性表示在外键数据更新时把外键关联设为null呀,另外你看看这个关联字段可不可以为null呀,还有就是数据库那边了;反正这一块坑很多呀,玩不好容易把自己玩死,建议不要建立外键约束,表与表之间存个主键就行多做个关联查询罢了######恩 这块坑确实多还深!不用外键估计是不可能的啊

    2020-06-05 12:09:54
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
事务、全局索引、透明分布式 立即下载
Phoenix 全局索引原理与实践 立即下载
《用管控策略设定多账号组织全局访问边界》 立即下载