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を参照して ください。

もう 1 つのオプションは、コレクションをフィルタリングする get メソッドを使用して、Java でオブジェクトをフィルタリングすることです。

于 2012-05-30T14:42:08.490 に答える