私は 1 つのアプリの開発に play 1.2.5rc4 を使用しており、Play の興味深い動作を発見しました。次のコードを見てください。
User user = new User(some attributes...);
boolean userSaved = user.validateAndSave();
new User の呼び出し中に、validation.addError() メソッドを使用して検証エラーを追加します。次に、検証に既にエラーが含まれているため、validateAndSave() 中に false が返されることを期待します。しかし、そうではありません。これがバグなのか機能なのか疑問に思っています。つまり、この動作が役立つユースケースを誰か思いつくことができますか?
もう 1 つの質問は、validateAndSave() がデフォルトの save() メソッドではないのはなぜですか? user.save() を呼び出しても、制約に違反するユーザーは保存されないことが予想されますが、明らかに保存されます(@Unique制約に違反するユーザーがdbに挿入される例があります)。これが役立つ理由は何ですか?メソッド save() を validateAndSave() として動作させてから、saveWithoutValidation() などのメソッドを使用する方がよいのではないでしょうか? メソッドの現在の命名が多くの問題を引き起こしていることがわかります。