【问题标题】:JPA using @JOINTABLE with additional @JOINCOLUMNsJPA 使用 @JOINTABLE 和额外的 @JOINCOLUMNs
【发布时间】:2012-05-30 07:48:22
【问题描述】:

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

【问题讨论】:

    标签: java jpa join jointable


    【解决方案1】:

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

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

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

    【讨论】:

    • 幸运的是,我实际上正在使用 EclipseLink!
    猜你喜欢
    • 2012-01-24
    • 2015-03-12
    • 2020-12-20
    • 1970-01-01
    • 1970-01-01
    • 2013-02-19
    • 2021-02-10
    • 2018-08-14
    • 1970-01-01
    相关资源
    最近更新 更多