2014-04-01 35 views
2

的休眠注释@Index已过时,但我无法找到的文档或任何提示如何交换它。等效休眠@index的?

@Entity 
class MyEntity { 
     @Index(name = "name") //org.hibernate.annotations.Index 
     private String name; 

     @Index(name = "age") 
     private int age; 
} 

结果: @deprecated Using {@link javax.persistence.Index} instead. 但如果我更改导入:Annotation disallowed for this location

所以:如何上述实体必须看使用非过时索引时是怎样的?

回答

3

如答案here所指定,javax.persistence.Index中的索引注释只能用作另一个注释的一部分。

@Table(name = "myTable", indexes = { @Index("name")}) 
@Entity 
class MyEntity { 
     @Index(name = "name") 
     private String name; 

     @Index(name = "age") 
     private int age; 
} 
+0

我应该只在“@ Table”注释中添加“name”索引吗?或者我应该列出所有带注释的索引吗? – membersound

+0

如果你只是想“名”就用的名字,这取决于你希望你的桌子上有多少索引。不要忘记你可以有索引组合。 – david99world

+0

你能纠正你的代码示例或使其更清楚了吗?如果我理解正确,这些属性不应该有任何'@索引'注释?或者'@ Table'和属性都需要注解?是否有可能给指数一个名字? Hibernate的'@ Index'支持这个。 – Jack