4

私は Record クラスを次のように持っています:

class Record {
    Date dateCreated
    Date lastUpdated
    def beforeInsert() {
        dateCreated = new Date()
    }
    def beforeUpdate() {
        lastUpdated = new Date()
    }
    static mapping = { tablePerHierarchy false }
}

そして、このクラスは他のいくつかのドメイン クラスに継承されます。たとえば、次のようになります。

class User extends Record{
    String userName
    String password
    String email
}

ここでの私の質問は次のとおりです。レコードテーブルの列を、それを拡張するテーブルに埋め込む方法はありますか?

4

3 に答える 3

6

tablePerClassまたはtablePerHierarchy戦略 を定義できます。こちらのドキュメントを参照してください

したがって、次のコードを使用する必要があります。

static mapping = {
    tablePerHierarchy true
}    
于 2012-07-17T16:57:56.550 に答える
2

ここで継承を使用できますが、クラス階層が制限される可能性があります。私はまっすぐな休止状態(GORMが使用するもの)と同じくらいGORMに精通していません。継承の代わりにコンポジションを使用したい場合は、次のようなものがうまくいくと思います(試したことはありませんが):

@Embeddable class AuditTimestamps { ... }

class User {
   @Embedded AuditTimestamps auditTimestamps

   def beforeInsert() { auditTimestamps.beforeInsert() }
   def beforeUpdate() { auditTimestamps.beforeUpdate() }

}

私はこれとまったく同じことをしましたが、これはまっすぐなJava/休止状態であり、魅力のように機能します。

于 2012-07-17T17:27:30.003 に答える