0

我有一个关系,我无法弄清楚 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 经常为空。如何让 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
}
4

0 回答 0