JPA ManyToOne可能为null JoinColumn

时间:2014-12-08 23:58:32

标签: jpa openjpa joincolumn

我有一段关系,我无法弄清楚JPA如何(或者甚至)如何映射它。

两个表由多列连接。合并的列是唯一的,但不是主键。

@ManyToOne
@JoinColumns({
    @JoinColumn(name = "TYPE", referencedColumnName = "TYPE", nullable = false),
    @JoinColumn(name = "SUBTYPE", referencedColumnName = "SUBTYPE", nullable = true)
})
private TypeInformation typeInformation;

如果指定了TYPE和SUBTYPE,则JPA仅返回TypeInformation,但SUBTYPE通常为null。如何通过将两个空值一起比较为真,让JPA返回匹配的TypeInformation?

这通常在SQL中通过将字段合并为非空值来进行比较。如果数据库返回null,是否可以为SUBTYPE列指定值?

我使用的具体JPA实现是Apache的OpenJPA 2.0,但是如果像Hibernate或EclipseLink这样的其他实现允许这个功能,我仍然感兴趣。

@Entity
@Table(name="TYPE_INFORMATION")
public class TypeInformation implements Serializable {
    @EmbeddedId
    private TypeInformationPK id;
    // other fields and accessors
}


@Embeddable
public class TypeInformationPK {
    @Column(name="TYPE")
    private String type;

    @Column(name="SUBTYPE")
    private String subtype;

    // No other fields
    // accessors
    // override equals and hashCode
}

0 个答案:

没有答案