我正在尝试确定是否有一种方法可以使用 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 的方法
任何帮助将不胜感激