2011-05-27 98 views
0

我正在使用Playframework編寫TodoList應用程序。我想更新一個任務,但不知道如何使用JPA更新(我只是從PHP使用Zend Framework而不熟悉Hibernate)。 我有編輯頁面的網址,例如:http://localhost:9000/TaskList/edit?id=2如何使用Playframework更新Mysql條目

其操控:

public static void edit(Long id) { 
     models.TaskList selectedTask = models.TaskList.findById(id); 
     render(selectedTask); 
    } 

其模型

@Entity 
public class TaskList extends Model { 

public String task; 
public int priority; 
public String category; 
public String taskStatus; 

public TaskList(String task, int priority, String category, String taskStatus) { 
    this.task = task; 
    this.priority = priority; 
    this.category = category; 
    this.taskStatus = taskStatus; 
} 

我需要id屬性模型(在數據庫中,我有id字段)? 如果沒有,當模型沒有指定id時如何更新?

謝謝大家。

回答

2

您不需要定義id,因爲id由play.db.jpa.Model類給出。
然而,如果要定義自己的ID,您可以通過extends GenericModel更換extends Model,然後你重新定義你自己的@Id領域,如(這是模型類的代碼):

@Id 
@GeneratedValue 
public Long id; 

無論如何,正如您在前面的3行代碼中所看到的那樣,默認情況下Id是生成的值。所以你不關心它的價值,因爲它是在你第一次堅持你的對象時由數據庫給出的。

現在如果你想更新你的對象,這樣做:

public static void edit(Long id) { 
     // get your object 
     models.TaskList selectedTask = models.TaskList.findById(id); 
     // modify your object 
     selectedTask.something = somevalue; 
     // update your object 
     selectedTask.save(); 
     // finally render your updated selectedTask 
     render(selectedTask); 
    } 

這一切;)

+0

非常感謝你,這正好解決了我的問題。 – 2011-05-27 09:30:33

+0

不客氣,如果你厭倦了JPA,試試像錫耶那這樣的替代品,它有時會帶來一絲氧氣;) – mandubian 2011-05-27 09:36:06