我在表单上有一些对象。
abstract class AbstractSomething{
int myMember;
// getters and setters
}
class ConcreteClass extends AbstractSomething{
int someOtherMember;
String name;
// getters and setters
}
现在我想将ConcreteClass
(在一个数据库表中)保留在我的数据库中,其中唯一键应该是使用hibernate注释的myMember和someOtherMember
的组合。
据我所知,复合键通常是使用 @Embedded
和 @EmbedderID
创建的 - 但当其中一个关键部分实际上来自父类(super class)。
最佳答案
我认为你可以用 @IdClass
来做到这一点。像这样的东西:
@MappedSuperclass
abstract class AbstractSomething {
@Id
int myMember;
}
@Entity
@IdClass(ConcreteClass.Key.class)
class ConcreteClass extends AbstractSomething {
public static class Key {
int myMember;
int someOtherMember;
// constructor, equals, hashCode
}
@Id
int someOtherMember;
}
这有点笨拙,但我相信它应该有用。
关于java - 复合键,其中部分键来自父类(super class),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19544493/