2014-01-20 30 views
2

外鍵使用Grails /格姆,我可以做這樣的事情定義索引指數Grails的/格姆

class Employee { 
    static hasMany = [projects: Project] 

    static mapping = { 
     projects joinTable: [name: 'EMP_PROJ', 
          column: 'PROJECT_ID', 
          key: 'EMPLOYEE_ID'] 
    } 
} 

如何配置它以便連接表中的列被索引?

謝謝

回答

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> 
2

如果您使用的是database migration plugin可以使用createIndex變化設置爲創建一個索引:

changeSet(author: "..", id: "..") { 
    createIndex(indexName: "indexname", tableName: "yourtable", unique: "true") { 
    column(name: "country_code") 
    } 
}