使用@Embedded Hibernate对象中的字段来指定id

时间:2012-06-04 12:35:03

标签: hibernate

我正在尝试确定是否可以使用ID中嵌入对象的字段。

这是我所拥有的课程的简化版本。

@Embeddable
class Entry {
    private String a;
    private String b;
    private String c;

    private Entry() {...}

    // getters and setters

    // public static factory to generate instance of Entry
}

@Entity
@Table(name = "Entry_X")
class EntryX {

    // I want EntryX to use fields 'a' and 'b' on Entry for its ID

    @Embedded private Entry entry;

    public EntryX() {...}
}

@Entity
@Table(name = "Entry_Y")
class EntryY {

    // I want EntryY to use fields 'a', 'b', and 'c' on Entry for its ID

    @Embedded private Entry entry;

    public EntryY() {...}
}

我没有能力修改'Entry'类,因为它是作为外部进程的一部分生成的。对生成器的任何更改请求都将至少重复执行1次,因此我必须使用我目前拥有的内容。

编辑:我在上面说了一个小谎言。我可以对Entry进行一些细微的更改。我可以通过生成器向类及其方法添加注释。我不能做一些事情,比如改变Entry的字段和成员的访问类型。

Entry的构造函数目前是私有的,所以我不能使用@MappedSuperclass和扩展方法。

似乎@Embeddable方法几乎让我在那里,但我找不到一种方法来正确构造EntryX和EntryY的id

非常感谢任何帮助

0 个答案:

没有答案