【问题标题】:Hibernate/JPA Legacy Table Issue with component keys for OneToMany join用于 OneToMany 连接的组件键的 Hibernate/JPA 旧表问题
【发布时间】:2011-07-13 19:34:57
【问题描述】:

我们公司刚刚开始研究 Hibernate/JPA 是否适合他们的旧表。 要求是将两个表与@OneToMany 相关联。欠表table1有id id1 id2,table2有id1、id2和id3。没有关联表。生成的查询应添加子句“id3=0”。有没有办法在table1中添加假id,常数值为0。

我尝试了以下两个选项。它们都不起作用。

1)

@OneToMany
@JoinColumns({
    @JoinColumn(name = "MVCMP, referencedColumnName = "VICMP"),
    @JoinColumn(name = "MVVND#", referencedColumnName = "VIVND#"),
    @JoinColumn(name = seq , referencedColumnName = "VISEQ#")
}) 
@WhereJoinTable(clause = "VISEQ# = 0") 
private List<VendorInternationalEntity> vendorInternational; 

2)

@OneToMany
@JoinTable(name="mas_int", joinColumns = @JoinColumn(name =  "MVCMP#"),
    inverseJoinColumns = @JoinColumn(name = "MVVND#"))
@WhereJoinTable(clause="VISEQ#=0")
private List<VendorInternationalEntity> vendorInternational; 

任何见解都会有所帮助。 提前致谢。

【问题讨论】:

  • 当您声明它们都不起作用时,您是什么意思?您可以发布表定义和 Hibernate 发出的查询吗?

标签: hibernate jpa


【解决方案1】:

这样的东西有用吗?

@OneToMany
@JoinColumns({
    @JoinColumn(name = "MVCMP, referencedColumnName = "VICMP"),
    @JoinColumn(name = "MVVND#", referencedColumnName = "VIVND#")
})
@Where(clause = "VISEQ#=0")
private List<VendorInternationalEntity> vendorInternational; 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-03-16
    • 1970-01-01
    • 1970-01-01
    • 2017-03-07
    • 1970-01-01
    • 2018-03-19
    • 1970-01-01
    相关资源
    最近更新 更多