有没有办法用一个具有DESC顺序的列创建多列索引?我试过这个(来自javax.persistence包的注释):
@Table(name = some_table
indexes = {
@Index(name = "idx_multi_column", columnList = "column1, column2, column3"),
@Index(name = "idx_multi_column", columnList = "column1, column2, column3 DESC")
}
)
但它使用 column3 asc 创建两个索引 - 忽略DESC。我正在使用:
Hibernate 4.3.10 Hibernate JPA 2.1 api
感谢。
答案 0 :(得分:1)
根据定义-即the JPA specification¹文档,又称JSR 338-可以按照您在问题中所描述的方式来注释所需的行为。从规范中引用 11.1.23索引注释,第452页,
@Index
批注用于模式生成。 [..]索引注释 可以用来指定主键索引中列的顺序。
@Target({}) @Retention(RUNTIME)
public @interface Index {
String name() default "";
String columnList();
boolean unique() default false;
}
columnList元素的语法为column_list,如下所示:
column::= index_column [,index_column]*
index_column::= column_name [ASC | DESC]
持久性提供程序必须遵守列的指定顺序。
如果未指定 ASC 或 DESC ,则假定为 ASC (升序)。
任何持久性提供者都必须(应该)遵守此要求,以符合JPA规范。因此,我可以想象Hibernate在4.3.10版本中确实(a)遭受了错误的困扰,或者(b)在特定方面没有遵守规范。
希望有帮助。
脚注
¹在2.2版或之前的2.1 / 2.0版中