我有以下结构:
@MappedSuperclass
public class AbstractEntitySequence {
@Id
@GeneratedValue( strategy = GenerationType.SEQUENCE, generator="X?" )
@SequenceGenerator( allocationSize = 1, name = "X?" )
@Column( name = "id", nullable = false, unique = true )
private Long id;
和子实体:
@Entity
@Table( name = "BANK" )
public class Bank extends AbstractEntitySequence implements Serializable {
...
}
和其他实体。
我需要每个实体都有一个SEQUENCE生成器名称,我不希望将它放在每个实体中(如^ C ^ V) 是否有可能以某种方式从子类初始化Abstract类中的注释(替换X1)?
答案 0 :(得分:0)
您只能在一个实体类中定义@SequenceGenerator,它将可用于所有实体,因为根据JavaDoc:
生成器名称的范围对于持久性单元是全局的 (跨所有发电机类型)。
所以,这就是你的映射应该是这样的:
@Entity
@SequenceGenerator(name="X", allocationSize=1)
public class Bank {
@GeneratedValue(strategy=GenerationType.SEQUENCE, generator="X")
@Id long id;
}
@Entity
public class InsuranceCompany {
@GeneratedValue(strategy=GenerationType.SEQUENCE, generator="X")
@Id long id;
}