我正在尝试确定是否可以使用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
非常感谢任何帮助