我使用 Hibernate 并希望通过其自然标识符查询实体。但是,似乎不可能在子类型上使用自然 id。我有两个类 A 和 B,其中 B 扩展 A:
class A {
long id;
}
class B extends A {
String naturalId;
}
A
在 Hibernate 中使用自己的标识符进行映射。B
被映射为连接的子类。B
但是,在 Hibernate 中映射自然标识符是不可能的,因为映射B
是子类映射。
为什么不可能在子类上有一个自然标识符
B
?请注意,我不希望 Hibernate 生成我的数据库模式,我只想拥有自然 id 以实现快速缓存命中。有没有一种方法/最佳实践可以在子类型上使用自然 id 以进行快速二级缓存查询?
- 当自然 id 在极少数情况下可能会更新(更改)并且必须在集群 Java EE 环境中维护缓存时,这是否仍然可能?