2014-04-04 37 views
0

我正在使用grails項目,我做了一個域並使用命令生成viewscontroller。它生成後,它的工作原理,但之後,我想從domain刪除一個字段。更新視圖+控制器+數據庫在域中刪除/添加字段

刪除之前

package com.liftoff 

class Person { 

    String studentID 
    String firstName 
    String middleName 
    String lastName 
    String year 
    boolean isMarried 

    static constraints = { 
     studentID() 
     firstName() 
     middleName() 
     lastName() 
     year() 
     isMarried() 
    } 
} 

刪除了一個後場從domain,在這裏我需要它自動更新所有viewcontrollerdatabase

package com.liftoff 

class Person { 

    String studentID 
    String firstName 
    String middleName 
    String lastName 
    String year 

    static constraints = { 
     studentID() 
     firstName() 
     middleName() 
     lastName() 
     year() 
    } 
} 

任何方式在Grails中做到這一點?

+0

您應該運行產生-all命令再次,域類更新後。 – emilan

+0

@emilan它不會刪除我的所有數據庫條目以及我在控制器中做了哪些更改嗎? –

+0

其實,如果你改變了你的域類,你應該用'create'模式下運行的應用程序更新您的數據庫,或者您應該使用'SQL'報表做手工。另外'產生-all'將重置您的視圖和控制器的所有變化。 – emilan

回答

0

如註釋中所述,一旦生成視圖/控制器和其他工件,您必須手動維護對域類所做的任何更改。

但是,如果你是在原型的過程,而不是定製的神器相當,但你可能會受益於dynamic scaffolding。不要生成控制器和視圖,而要創建控制器,然後將其標記爲腳手架。例如:

class BookController { 
    static scaffold = true 
} 

另外設置你dbCreateDataSource.groovy「更新」將讓你的模式在數據庫中同步與您的更改您的域類。

0

作爲answer given的更新,Grails v3.0 +不再支持這種定義動態腳手架的方式。取而代之的是,如在Grails documentary所描述的,分配域類到支架屬性(而不是分配true)。

例如:

class PersonController { 
    static scaffold = Person 
} 
相關問題