1

私は Grails を使用しており、次のドメイン クラスがあります。

class Pack {
  String code

  Date publishedDate
  //several other properties (including collections hasMany)....

  def isPublished() {
    return publishedDate != null
  }

  def publish() {
    publishedDate = new Date()    
  }

  def canEdit() {
    return !isPublished()
  }
}

パックを販売するには、まずそれを公開する必要があり、公開メソッドを使用してパックを公開します。

パブリッシュ後、パックは変更できません (つまり、パブリッシュ後、パックは不変のインスタンスである必要があります)。

私の質問は:

  • Groovyを使用してMutableオブジェクトをImmutableに変換するには?

また

  • Hibernate から Immutable インスタンスを取得する方法はありますか?

もう 1 つのオプションは、canEdit() メソッドを Hibernate イベント (beforeUpdate および beforeDelete) と組み合わせて使用​​することです。canEdit() == false の場合、beforeDelete または beforeUpdate 内で RuntimeException をスローできます。良い解決策はありますか?

Obs .: Ruby のフリーズ メソッドはまさに私が必要としているものだと思います。( http://rubylearning.com/satishtalim/mutable_and_immutable_objects.html )

4

1 に答える 1

1

Pack.read( id )取得するために使用できます

読み取り専用状態の指定された ID のドメイン クラスのインスタンス。指定された ID を持つ行が存在しない場合は null が返されます。

http://grails.org/doc/latest/ref/Domain%20Classes/read.htmlを参照

于 2014-03-04T15:48:17.127 に答える