ドメインオブジェクトにヘルパーメソッドを追加すると、コンパイル時に「xプロパティが見つかりません」というエラーが発生することがよくあります。これは、メソッド名、、、および最近でも発生するgetX
ようsetX
ですisX
。避けるべき名前の形式のリストはありますか?Grailsが自動プロパティと混同しないように、これらのメソッドに注釈を付けたり、ラベルを付けたりする方法はありますか?
3 に答える
Grailsはプロパティを自動検出し、それらが永続的であると想定します。Groovyのパブリックフィールドは、内部でゲッターとセッターを作成するため、ゲッターは永続フィールドに関連付けられていると見なされます。
ただし、「get」または「is」で始まり、永続フィールドのゲッターではないヘルパーメソッドが必要な場合は、2つのオプションがあります。transients
1つは、リストを使用することです。http: //grails.org/doc/latest/ref/Domain%20Classes/transients.htmlを参照してください。
もう1つのオプションは、戻り値をとして宣言することですdef
。タイプされていないため(defはObjectのエイリアスです)、Hibernateは使用するデータ型がわからないため、永続化できません。したがって、無視されます。
私の好みはtransients
リストです。なぜなら、それらが何をするのか、どのパラメータータイプを受け入れるのか、そして何を返すのかが明らかな自己文書化メソッドが欲しいからです。
私は共通のリストを知りません-それはあまりにも多様です。コンベンションメソッドは、GroovyとGrailsのさまざまな部分で追加されています。
- プロパティゲッター/セッターに関するGroovyの慣習は非常に基本的なものです。メソッドを持ち、プロパティへの
getX()
読み取りアクセス権を持たないことは不可能です。x
- Grailsドメインクラスの動的メソッドとドメインクラスの規則プロパティは、Grailsドメインクラスに固有です。
- コントローラなどについても同じです。
- 、、、、などを含む
methodMissing
、propertyMissing
プロパティゲッター/セッターに関するGroovyコンベンション。$staticMethodMissing
getProperty
properties
- Groovyは、;
as<Type>()
のような多くのメソッドを追加します。asInteger()
- プラグインが異なれば、より多くのコンベンションメソッドを注入できます。
getter / setterではなく、宣言されたフィールドにアクセスするには、javaフィールドアクセス演算子を使用します。
私があなたの問題を理解している限り、あなたは一時的なものを使うことができます!
static transients = ['feildName']