4

という名前のモデルを仮定しますUser:

@Entity
public class User extends Model {
    @Id
    @Constraints.Min(10)
    public Long id;

    @Constraints.Required
    public String username;

    @Constraints.Required
    public String password;

    public static Finder<Long, User> find = new Finder<Long, User>(
        Long.class, User.class
    );
}

コントローラーで のインスタンスを更新しようとするとUser:

    User user = User.find.where().eq("username", username).findUnique();

    if(user != null) {
        user.username = "some_new_username";
        user.save();
    }

変更はコミットされていないようです。モデルインスタンスをそのプロパティで変更すると、ダーティにならないため、変更が行われないことをどこかで読みました。したがって、代わりにセッターを使用する必要があります。Play Framework のドキュメントでは、これらのセッター (およびゲッター) は自動的に生成されると言われていますが、使用user.setUsername(username)するとコンパイル エラーが発生します。

cannot find symbol [symbol: method setUsername(java.lang.String)] [location: class models.User]

何か不足していますか?

4

2 に答える 2

1

私の知る限り、自動 getter/setter 変換は Play2 で壊れています。あなたの課題:

user.username = "some_new_username";

関数呼び出しをトリガーする必要がありました。

user.setUsername("some_new_username");

この翻訳は Play 2 では壊れているようです。この件に関する私自身の質問です。

于 2013-05-20T13:50:33.693 に答える