如果ID是在映射的超类上定义的,有没有办法为Hibernate中的每个表指定不同的序列?
应用程序中的所有实体都扩展了一个名为DataObject
的超类,如下所示:
@MappedSuperclass
public abstract class DataObject implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE)
@Column(name = "id")
private int id;
}
@Entity
@Table(name = "entity_a")
public class EntityA extends DataObject { ... }
@Entity
@Table(name = "entity_b")
public class EntityB extends DataObject { ... }
这会导致所有实体使用一个共享序列,默认为hibernate_sequence
.
我想 for each 实体使用一个单独的序列,例如上面例子中的entity_a_sequence
和entity_b_sequence
.如果ID是在子类上指定的,那么我可以使用@SequenceGenerator
注释 for each 实体指定一个序列,但在本例中,ID在超类上.鉴于ID在超类中,有没有一种方法可以 for each 实体使用单独的序列?如果有,如何使用?
(We are using PostgreSQL 8.3, in case that's relevant)