JPA使用@JOINTABLE和@JOINCOLUMNs

时间:2012-05-30 07:48:23

标签: java jpa join jointable

我正在使用JPA从现有的ERP系统中提取数据。我正在为某些数据使用(现有)连接表。问题是我还应该匹配一个不在连接表上的列,而是匹配源表本身。

T1 (source)
- F1*
- F2
- F3
- ..

T2 (join)
- F4
- F5

T3 (source)
- F6*
- F7
- F8
- ..

我当前的联接表条件是这样的:

@ManyToOne(fetch=FetchType.EAGER, cascade=CascadeType.ALL)
@JoinTable(name="T2", schema=Util.schema, joinColumns = {   
        @JoinColumn(name="F4", referencedColumnName="F2", unique=false),
        @JoinColumn(name="F5", referencedColumnName="F3", unique=false)
    },
    inverseJoinColumns = {
        @JoinColumn(name="F4", referencedColumnName="F7", unique=false),
        @JoinColumn(name="F5", referencedColumnName="F8", unique=false)
    }
}

这有效,但我如何/在哪里添加条件T1.F1 = T3.F6?

1 个答案:

答案 0 :(得分:5)

JPA不直接允许此操作。如果您使用的是EclipseLink,则可以使用DescriptorCustomizer为映射连接添加其他条件。

请参阅, http://wiki.eclipse.org/EclipseLink/Examples/JPA/MappingSelectionCriteria

另一种选择是使用过滤集合的get方法过滤Java中的对象。