java - 除主以外的 Hibernate OneToMany 关联

标签 java spring hibernate jpa orm

我正在尝试使用主列以外的列在两个表之间建立一对多关系。我想要 Asset.assetnum 和 SoftLink.assetnum 之间的联接。我正在使用 hibernate 4,它总是在primary 之间生成关系。

从 ASSET this_ 左外连接 this_.ASSETID=soft3_.ASSETNUM

上的 SOFTLINKS soft3_

我真正想要的

从 ASSET this_ 左外连接 this_.ASSETNUM=soft3_.ASSETNUM

上的 SOFTLINKS soft3_

如果我遗漏了什么,请提出建议。

@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;
}

最佳答案

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

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

关于java - 除主以外的 Hibernate OneToMany 关联,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32148387/

相关文章:

java - 如何克服未发现转换器错误

mongodb - java.lang.NoSuchFieldError : FSYNCED

java - Spring xml ioc 比 Java 实例化有什么好处?

java - 如何从前端避免并发

java - 用Future实现缓存过期

java - 使用 Spring Data Repository 限制事务数量

java - 在 Hibernate JPA2 上使用唯一约束

java - java中无法加载多个类文件

java - Spring Batch 并行处理多次执行一个步骤

mysql - Spring模型使用多个表