2010-06-15 21 views

回答

3

我相信在Grails中沒有開箱即用的解決方案,但實現自己的org.hibernate.id.IdentifierGenerator應該相當簡單。

只要沒有分配id,或者使用域對象的已分配值,實現該接口將委派給默認id生成策略。

一個簡單的實現時沒有鍵被分配看起來是這樣的委派IdentityGenerator:

package my.company.hibernate 

import org.hibernate.engine.SessionImplementor 

public class PreAssignedIdGenerator extends org.hibernate.id.IdentityGenerator { 
    public Serializable generate(SessionImplementor session, Object object) { 
    return object.id ? object.id : super.generate(session, object) 
    } 
} 

你的域類將需要定義新的ID生成器:

class FooDomain { 
    Long id 
    static mapping = { 
    id generator: "my.company.hibernate.PreAssignedIdGenerator" 
    } 
}