2

我正在使用 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?

4

1 回答 1

6

JPA 不直接允许这样做。如果您使用的是 EclipseLink,您可以使用 DescriptorCustomizer 将其他条件添加到您的映射连接。

见, http://wiki.eclipse.org/EclipseLink/Examples/JPA/MappingSelectionCriteria

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

于 2012-05-30T14:42:08.490 回答