我有两个表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定义

10-04 10:02