如何为子表定义索引?

3
我遇到了一些问题。下面定义了一个父类和从父类派生的子类。由于父类具有@Table注释,我可以定义索引。但是由于子类中没有@Table注释,我该如何为该子类列定义索引呢?我想使用@SecondaryTable注释,但是我认为@InheritanceType.SINGLE_TABLE无用,因为会创建另一个子表。如果我有任何错误,请纠正。另外,是否有解决子级索引问题的方法。
@Table(name = "Parent", indexes = {@Index(name = "IDX_USERNAME", columnList = "username")})
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name="TYPE")
@Entity
public class Parent{
}

@Entity
@DiscriminatorValue("C")
public class Child extends Parent{
}

你可以在父类的Table注解中定义索引。只有一个表,它就是在那里定义的。 - JB Nizet
谢谢您的回答,但是我不能在子类上定义索引吗?只是好奇,因为它有助于代码理解和更加清晰。 - Saurabh Kumar
不,我认为这是不可能的。一个更好的想法是使用FlywayDB或Liquibase来定义你的模式。 - JB Nizet
非常感谢您再次的回答。 - Saurabh Kumar
1个回答

1
唯一的方法是使用Hibernate特定的@Index注释
@org.hibernate.annotations.Index(name = "CHILD_NAME_IDX", columnNames = "name")
private String name;

这个注解已经废弃了,但是你可以将其应用于字段或方法。

谢谢你的回答。实际上我看到了这个弃用警告,然后我想可能Hibernate提供了其他的注解,所以才想在这里问一下))) - Saurabh Kumar
1
JPA的等效项不适用于字段,因此它并不完全相同。 - Vlad Mihalcea

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接