spring3.0一对一保存报错可能的原因以及解决方法

1.生成框架时有没有改变domain中一对一的两个表的配置:

正确的方式是:例如project的id和projectArtical中的projectId相关联,而project是主表,projectArtical是从表,

而project的id配置和关联关系的配置要改成如下:



@Column(name = "ID", nullable = false)
@Basic(fetch = FetchType.EAGER)
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@XmlElement
Integer id;


/**
*/
@OneToOne(mappedBy = "project", fetch = FetchType.LAZY)
@XmlElement(name = "", namespace = "")
ProjectArtical projectArtical;

projectArtical的projectId的配置和关联关系的配置改成如下:

@Column(name = "Project_ID", nullable = false)
@Basic(fetch = FetchType.EAGER)
@Id
@XmlElement
Integer projectId;

切记要把用MyEclipse for Spring10.6自动生成的

@PrimaryKeyJoinColumn
@OneToOne(fetch = FetchType.LAZY)
@XmlElement(name = "", namespace = "")
Project project;

改成如下的方式:
@OneToOne(fetch = FetchType.LAZY)
@JoinColumns({ @JoinColumn(name = "Project_ID", referencedColumnName = "ID") })
@XmlElement(name = "", namespace = "")
Project project;


2.在保存一对一个的表,两表先后保存时,必须先保存主表然后保存副表,在保存主表的同时,必须先将主表的副表给先设置为空,例如project.setProjectArtical(null); 然后再保存projectArtical表。

然而在删除的时候必须先删除projectArtical表,再来删除project表。

转载于:https://my.oschina.net/u/659230/blog/115790

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值