我用泛型创建了一个 MyCompositeKey 类:
class MyCompositeKey<T> {
T compositeId0;
Integer compositeId1;
Integer compositeId2;
}
所以我可以在许多具有相同复合键的表中使用它,只改变类型:
class Table1<Integer> {
@EmbebedId
MyCompositeKey<Integer> compositeId;
//other attributes
}
class Table2<String> {
@EmbebedId
MyCompositeKey<String> compositeId;
//other attributes
}
//...
问题是如果我使用我的课程:
class MyId {
Integer id0;
Integer id1;
}
class Table3<MyId> {
@EmbebedId
MyCompositeKey<MyId> compositeId;
//other attributes
}
Hibernate 尝试在 Table3 中找到不存在的列“compositeId0”(我的表 3 具有复合键:id0、id1、compositeId1、compositeId2)。我怎样才能做到这一点?
PS:如果我将@EmbeddedId 放在“MyCompositeKey.compositeId0”中适用于我的班级,但不适用于 Integer、Long、String... 因为 Hibernate 试图找到列“value”。