在用户属于特定组织的情况下,我们具有以下实体关系。我的查询看起来像是“从org =:org用户选择”或“从org =:org用户输入和type =:type选择”
我在User类上有单独的索引。由于外键元素上的索引,因此第一个查询会很好。第二个查询是否对组织和类型列要求多列索引。如果是这样,我应该如何注释以创建一个这样的索引。
@Entity class User { ... @ManyToOne @ForeignKey @Index Organization org; @Index Type type; ... }
使用hibernate特定@Table注释可以做到这一点。从文档中:
@Table
2.4.1实体 … @Table(appliesTo="tableName", indexes = { @Index( name="index1", columnNames={"column1", "column2"} ) } ) 在table的列上创建定义的索引tableName。这可以应用于主表或任何辅助表。该@Tables注释允许您在不同的表适用索引。预期在@javax.persistence.Table或@javax.persistence.SecondaryTable(s)发生此注释。
2.4.1实体
…
@Table(appliesTo="tableName", indexes = { @Index( name="index1", columnNames={"column1", "column2"} ) } ) 在table的列上创建定义的索引tableName。这可以应用于主表或任何辅助表。该@Tables注释允许您在不同的表适用索引。预期在@javax.persistence.Table或@javax.persistence.SecondaryTable(s)发生此注释。
@Table(appliesTo="tableName", indexes = { @Index( name="index1", columnNames={"column1", "column2"} ) } )
tableName
@Tables
@javax.persistence.Table
@javax.persistence.SecondaryTable(s)