2

我用泛型创建了一个 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”。

4

0 回答 0