次のドメイン クラスの継承戦略があります。
- AbstractDomain (デフォルトのプロパティを含む)
- ユーザーが AbstractDomain を拡張する
- オペレーターはユーザーを拡張します
AbstractDomain では、メソッドを使用して beforeUpdate および beforeInsert を実装するメソッドを作成したため、クラスを拡張する際にこれらを拡張できます。
抽象ドメイン
abstract class AbstractDomain {
protected void onBeforeInsert() {
...
}
protected void onBeforeUpdate() {
...
}
def beforeInsert() {
onBeforeInsert()
}
def beforeUpdate() {
onBeforeUpdate()
}
}
ユーザークラスには、次のようにユーザーパスワードを暗号化するロジックがあります..
ユーザー
public class User extends AbstractDomain {
@Override
protected void onBeforeUpdate() {
super.onBeforeUpdate()
if (isDirty('password')) {
encodePassword()
}
}
protected void encodePassword() {
println "encoding password!!!!"
if (springSecurityService) { // added the if clause to ensure
that tests work correct!
password = springSecurityService.encodePassword(password)
}
}
}
オペレーター
public class Operator extends User {
// code omitted
}
そのため、オペレーターを更新しようとすると、「encoding password!!!!」というメッセージが表示されます。プロパティは設定されていますが、DB を確認すると、パスワードはまだクリア テキストのままです。変更は効果がなく、永続化されていないようです。
私が見逃している可能性のある手がかりはありますか?