使用Grails / Gorm,我可以通过执行以下操作来定义索引:
class Person {
String firstName
static mapping = {
table 'people'
id column: 'person_id'
firstName column: 'First_Name', index: 'Name_Idx'
}
}
但是,如果我使用连接表,如:
class Employee {
static hasMany = [projects: Project]
static mapping = {
projects joinTable: [name: 'EMP_PROJ',
column: 'PROJECT_ID',
key: 'EMPLOYEE_ID']
}
}
如何配置连接表中的列?
由于
答案 0 :(得分:2)
如果您使用的是database migration plugin,则可以使用createIndex更改集创建索引:
changeSet(author: "..", id: "..") {
createIndex(indexName: "indexname", tableName: "yourtable", unique: "true") {
column(name: "country_code")
}
}
答案 1 :(得分:1)
似乎Grails中没有任何DSL可以这样做。但是,您始终可以在hibernate configuration中为这些连接表设置索引。以下是所述配置文件的示例。
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE hibernate-mapping PUBLIC
'-//Hibernate/Hibernate Mapping DTD 3.0//EN'
'http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd'>
<hibernate-mapping>
<database-object>
<create>CREATE INDEX foo_idx ON bar (some_id, other_column)</create>
<drop/>
<dialect-scope name='org.hibernate.dialect.MySQL5InnoDBDialect' />
</database-object>
</hibernate-mapping>