grails 底層集成了hibernate,所以會根據你的實體類自動創建表結構(對應表不存在的情況下),那麼如何創建一個不會自動生成表的實體類domain呢?
一、不生成對應的表
只需要在其他domain類中,定義你不需要表的domain類,即內部類
在A.groovy中聲明domain B
class A {
String name
}
class B {
String name
}
這樣 grails就只會生成表a,不會生成表b
二、生成表,不生成某些字段的表結構
static transients = ['myfield'] 定義時只需要指定這個static transients 即可
class A {
String name
static transients = ["name"]
int age
}
這樣生成的表結構中就只有age字段,name沒有
三、去除樂觀鎖的影響
grais的domain會自動添加樂觀鎖,即每個表記錄都會有一個默認的version字段
如何去除呢
只需在domain中添加
static mapping = { version(false)} 即可
四、表已經存在,且與domain不對應 如何對應
grails domain與表結構是默認按照駝峯命名法對用的
比如 實體類 CustomerPhone 對應的表 customer_phone
字段 phoneView 對應表字段 phone_view
那麼表已經存在且不與domain實體類對應時怎麼辦呢?不必擔心
可以加上如下對應關係
static mapping = {
table('phone')
phoneView column : 'phone'
}
這樣 實體類 CustomerPhone 對應的表就是 phone
字段 phoneView 對應表字段就是 phone