我有两个表Location和LocationCode,如下所述
“代码”列是locationCode表的FK。
以下是映射文件
locationCode.java
@Entity
@Table(name="locationCode")
public class locationCodeNode {
@Id
@Column(name="code")
public String code;
@Column(name="description")
public String description;
}
locationNode.java
@Entity
@Table(name="location")
public class locationNode {
@Id
@Column(name="ID")
public String id;
@Column(name="value1")
public String value1;
@OneToOne(fetch=FetchType.EAGER,cascade=CascadeType.ALL)
@JoinColumn(name="code",insertable=false,updatable=false,nullable=true)
public locationCode code;
}
在其中一项服务中的某些位置,我试图将位置表中的“代码”值设置为locationCode表中行的其中一个**(位置代码表中的值不会更改,它们是域值)**
//fetch of hibernate this will not have code assigned to it yet
location location = locationDao.findById(20);
locationCode code = codeDao.findById(3);
location.setCode(code);
locationDao.saveOrUpdate(code);
//commit session.
位置表中代码的值不变。
问题是,我是否适合休眠映射?代码有什么问题吗?
最佳答案
尝试删除
insertable=false,updatable=false
来自代码字段的joincolumn定义