Play 1.2.x アプリケーションで奇妙な動作を見つけました
たとえば、次のコードがあります。
アプリ/モデル/Account.java:
package models;
import javax.persistence.Entity;
import play.db.jpa.Model;
@Entity
public class Account extends Model {
public String username;
}
アプリ/coutrollers/Application.java:
package controllers;
import play.mvc.Controller;
import java.util.List;
import models.Account;
public class Application extends Controller {
public static void index() {
Account account = Account.find("username LIKE ?", "username1").first();
account.username = "username3";
List<Account> accounts = Account.all().fetch();
render(account, accounts);
}
}
アプリ/ビュー/アプリケーション/index.html:
#{extends 'main.html' /}
#{set title:'Home' /}
<h2>Working!</h2>
${account.username}
<ul>
#{list items:accounts, as:'acc'}
<li>${acc.username}</li>
#{/list}
</ul>
データベースに次のアカウントがある場合:
- ユーザー名1
- ユーザー名2
出力は次のようになります。
働く!
ユーザー名3
- ユーザー名3
- ユーザー名2
ただし、次のようにする必要があります。
働く!
ユーザー名3
- ユーザー名1
- ユーザー名2
これは何ですか???
- バグを再生しますか?
- Java静的コンテキスト機能?
- JPA機能?
- ...?
解決済み
@ミリムースをありがとう。必要なのは次のdetach()
とおりです。
package controllers;
import play.mvc.Controller;
import java.util.List;
import models.Account;
import play.db.jpa.JPA;
public class Application extends Controller {
public static void index() {
Account account = Account.find("username LIKE ?", "username1").first();
account.username = "username3";
JPA.em().detach(account);
List<Account> accounts = Account.all().fetch();
render(account, accounts);
}
}