1

我正在尝试确定是否有一种方法可以使用 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 的构造函数目前是私有的,所以我不能使用 @MappedSuperclass 和扩展方法。

似乎@Embeddable 方法几乎可以让我到达那里,但我就是找不到正确构造 EntryX 和 EntryY 的 id 的方法

任何帮助将不胜感激

4

0 回答 0