我已经通过继承关系中的注释成功定义了一个序列生成器,大致如下:
@MappedSuperclass
public class DomainObject {
@Id
@Column( columnDefinition = "serial" )
@GeneratedValue( generator = "id_sequence", strategy = GenerationType.IDENTITY )
private long id = 0;
}
@Entity
@Table( name = "user" )
@SequenceGenerator( name = "id_sequence", sequenceName = "user_id_seq" )
public class User extends DomainObject {
}
在此示例中,User类的序列生成器从DomainObject中的Generated值注释中找到id_sequence。
但是,如果我将DomainObject设为抽象类并将其放置在另一个依赖项中(关于它的所有其他内容都保持不变),则会出现异常:
org.hibernate.AnnotationException: Unknown Id.generator: id_sequence
在更改的版本中,DomainObject依赖项位于@ComponentScan路径中,因此我不确定为什么它不起作用。有什么想法吗?
答案 0 :(得分:0)
为什么不这样做:
@MappedSuperclass
public abstract class DomainObject {
@Id
@Column( columnDefinition = "serial" )
@SequenceGenerator( name = "id_sequence", sequenceName = "user_id_seq" )
@GeneratedValue( generator = "id_sequence", strategy = GenerationType.IDENTITY )
private long id = 0;
}
@Entity
@Table( name = "user" )
public class User extends DomainObject {
}
我已经在其他项目中成功完成了此配置……关于找不到带注释的类,请确保DomainObject在类路径中,并且User
实体在春季确实被检测到了。