私は 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 )