Hibernate OneToMany关联而非主要关联

时间:2015-08-21 19:58:27

标签: java spring hibernate jpa orm

我正在尝试使用除primary之外的列来构建两个表之间的一对多关系。我想要Asset.assetnum和SoftLink.assetnum之间的连接。我正在使用hibernate 4,它总是在primary之间产生关系。

来自ASSET this_左外连接SOFTLINKS soft3_ on this_.ASSETID = soft3_.ASSETNUM

我真正想要的是什么

来自ASSET this_左外连接SOFTLINKS soft3_ on this_.ASSETNUM = soft3_.ASSETNUM

请告知我是否遗漏了任何内容。

@Entity
@Table(name="ASSET")
public class Asset {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name="ASSETID", nullable = false)
    private int assetid;

    @Column(name="ASSETNUM", nullable = true)
    private String assetnum;    

    @OneToMany(fetch = FetchType.EAGER, mappedBy = "asset") 
    private List<SoftLinks> softlinks = new ArrayList<SoftLinks>(); 
}

@Entity
@Table(name="SOFTLINK")
public class SoftLinks {
    @Id 
    @Column(name="SOFTLINKID", nullable = false)    
    private String softlinkid;

    @Column(name="ASSETNUM", nullable = true)
    private String assetnum;    

    @ManyToOne
    @JoinColumn(name = "ASSETNUM", insertable = false, updatable = false)
    private Asset asset;
}

1 个答案:

答案 0 :(得分:2)

SoftLinks课程中,您需要将@ManyToOne关联更改为:

@ManyToOne
@JoinColumn(name = "ASSETNUM", referencedColumnName = "ASSETNUM", insertable = false, updatable = false)
private Asset asset;