找到how to manually commit a Play! JPA transaction后......我不确定我真的需要。
我有两个控制器操作:一个添加网站,然后立即重定向到下一个...显示其编辑表单。
public static void added(String title){
Task task= new Task();
website.title = title;
task.save();
// Do I really need to commit this transaction here?
// Note that task.id is already filled here, somehow
// https://stackoverflow.com/questions/8169640/how-does-an-entity-get-an-id-before-a-transaction-is-committed-in-jpa-play
JPA.em().getTransaction().commit();
edit(task.id);
}
public static void edit(long taskId) {
Task task = Task.find("byId", taskId).first();
render(task);
}
是否需要在重定向到edit()
之前提交事务?
答案 0 :(得分:2)
没有。 :)(虽然将来可能会出现需要控制事务处理的情况,但这似乎不是其中之一;正如您还发现的那样,Play!会在保存后立即刷新会话,所以你有访问自动生成的PK ID。因为这似乎是你尝试这个的唯一原因,我会让Play!做它的事情,只有劫持控制,如果/你真的需要。)