【发布时间】:2011-04-04 15:06:41
【问题描述】:
我们有这样的情况,我们需要在一个属性下关联不同的实体,并在查询中使用这个属性。 该项目使用 JPA 和 EclipseLink 作为实现。
示例代码说明问题:(实际问题要复杂得多)
interface I1 {
public int getData();
}
@Entity
class E1 implements I1 {
public int id;
public String someData;
public int getData() { return someData; }
}
@Entity
class E2 implements I1 {
public int id;
public String someOtherData;
public int getData() { return someOtherData; }
}
@Entity
class Test {
// we want to handle this as if it was a real entity using the I1 Interface
// Since it is a oneToMany mapping we cannot use eclipselinks
// VariableOneToOne mapping
// something like this should be possible
// SELECT t.refToEntities From Test t where t.data == 'Some String'
public List<I1> refToEntities;
}
由于历史原因,实体不共享继承关系,但它们具有公共数据,这些数据在公共接口下被抽象出来。 我们现在面临的问题是,我们有另一个实体想要使用一对多关系中的公共接口与这些实体相关联。理想情况下,该关系应该可以使用 JPQL 进行查询,但使用 EclipseLink 特定方法也可以。
总而言之,我们希望为 OneToMany 关系建立一个 VariableOneToOne 映射。
到目前为止,我发现的文档表明可以为接口构建 RelationalDescriptor,但不清楚如何将此描述符放入 JPA中的会话中> 场景以及如何设置 InterfacePolicy 以便将接口用作底层实体的通用类型。
那么有人知道如何做到这一点,或者可以指出我们的工作代码吗?
【问题讨论】:
标签: java jpa eclipselink