【求助】hibernate使用@ManyToOne关联保存问题。

yijing4756 2017-11-15 09:48:59
我在项目中使用hibernate中在实体类里面利用@ManyToOne来进行关联。
但是因为我@ManyToOne中A表关联B表的字段并非ID字段,而是我自己定义的一个code字段。
A表实体类中是这么写的:

@Entity
@Table(name="A")
public class A implements Serializable {

//关联表B,关联字段是bcode,是一个自定义的code字段。
@ManyToOne
@JoinColumn(name="bcode",referencedColumnName="bcode")
private B b;

但是在给A表追加新数据的时候,会提示:object references an unsaved transient instance - save the transient instance before flushing
说白了就是我插入数据的时候表A的实体类中的B实体类处于游离状态无法提交,
这个时候,虽然说可以通过 @ManyToOne(cascade=CascadeType.ALL)这样追加级联属性来解决游离问题。但是随之而然也出现了一个问题。表A的数据插入成功了, 但是表B也跟着插入一条数据。表B的插入数据就是表A中实体类关联的实体类B里面的数据。
我个人猜测是:首先我表A关联的表B的字段并非ID字段,而是我自己定义的CODE字段。但是表B中的ID字段是自动递增。导致了表A在提交数据的时候,A实体类中的B实体类的ID字段就自动递增了。所以导致插入一条新的数据。但是按常理来说我在表A中插入数据的时候不应该对表B进行操作才对。
所以请问如何解决这个问题。
如下图,在给表A追加数据的时候,表B跟着新增了一条数据。termcode就是我关联的字段

...全文
606 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
verejava 2018-08-10
  • 打赏
  • 举报
回复
a945943622 2018-08-10
  • 打赏
  • 举报
回复
功能完整性比性能权重高
yijing4756 2017-11-15
  • 打赏
  • 举报
回复
我在网上也查了很久,虽然说在表A提交的时候,先load一下。获取关联字段的那条信息再set进A字段可以解决问题,但是这样就导致了每次新增一条数据,或者说编辑一条数据都需要进行一次数据查询。这样的话服务器压力就更大了

81,122

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧