我有@MappedSuperClass
(简化示例):
@MappedSuperclass
public abstract class MySuperClass {
@Id
@GeneratedValue
private long id;
@Column(nullable = false)
private Date creationDate;
// ...
}
和一个混凝土Entity
(简化示例):
@Entity
public class MyEntity extends MySuperClass {
@Index(name = "IDX_MYINDEX")
@Column(nullable = false)
@Enumerated(EnumType.STRING)
private MyType type;
@Index(name = "IDX_MYINDEX")
@Column(nullable = false)
@Enumerated(EnumType.STRING)
private MyResult status;
// ...
}
现在我需要一个包含列的索引MySuperClass.creationDate
, MyEntity.status
and MyEntity.type
.
如果我添加@Index(name = "IDX_MYINDEX")
to MySuperClass.creationDate
hibernate添加了一个索引creationDate
到继承自的每个实体MySuperClass
.
I tried @AttributeOverride
但它不支持索引。
有任何想法吗?
如果您正在使用JPA 2.1
那么你可以使用类注释@Table
及其属性索引
@Table(indexes = { @Index(name = "IDX_MYIDX1", columnList = "id,name,surname") })
请注意,正如文档所说
仅当表生成有效时才使用这些。默认为无
附加索引。
columnlist
如上所示,接受列名列表作为逗号分隔列表。
如果您不使用 JPA 2.1,则可以使用旧的Hibernate
s @Index
注释(请注意,这已被弃用)。有属性columnNames
您可以在其中传递列名称数组,无论它是在哪个字段之上声明的。
@Index(name = "IDX_MYIDX1", columnNames = { "id", "name", "surname"})
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)