有:
@MappedSuperclass
class Superclass {
@Id
@Column(name = "id")
protected long id;
@Column(name="field")
private long field;
}
和
@Entity
class Subclass extends Superclass {
}
如何在子类中用@GeneratedValue注解继承的id,用@Index注解继承的字段?
最佳答案
How to annotate inherited id with @GeneratedValue and field with @Index within Subclass?
据我所知,你不能。您可以做的是使用 AttributeOverride
和 AssociationOverride
注释覆盖属性和关联(即更改列或连接列)。但是您不能完全按照您的要求去做。
对于 GeneratedValue
,如果您不想在映射的父类(super class)中声明它,请考虑使用 XML 映射来覆盖该策略。
对于 Index
(顺便说一下,这不是标准注释),您是否真的尝试使用 Hibernate 的 Table
注释在表级别声明它(我假设您使用的是 Hibernate)?
@Table(appliesTo="tableName", indexes = { @Index(name="index1", columnNames= {"column1", "column2"} ) } )
creates the defined indexes on the columns of table tableName.
引用资料
- JPA 1.0 规范
- 第 2.1.9.2 节“映射的父类(super class)”
- 第 9.1.10 节“AttributeOverride 注释”
- 第 9.1.11 节“AttributeOverrides 注释”
- 第 9.1.12 节“AssociationOverride 注释”
- 第 9.1.13 节“AssociationOverrides 注释”
- Hibernate 注释引用指南
关于java - 将注解应用于继承自@MappedSuperclass 的字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3831395/