2011-12-27 67 views
2

嗨對象/實體的所有我是新來playframework和JPA保存在Playframework

1日我創建了一個用戶的實體bean如下

@Entity 

@Table(name="m_users") 

public class AppUser { 

@Id 
    @GeneratedValue 
public int uid; 

@Required 
@MaxSize(100) 
public @Column(name="user_name") String userName; 

@Required 
@MaxSize(20) 
public @Column(name="pass") String password; 

public AppUser(int uid, String userName, String password) { 
    this.uid = uid; 
    this.userName = userName; 
    this.password = password; 
} 
} 

然後我創建了一個保存在內容數據管理器對在playframework 的內存如下圖所示

public class DataManager extends JapidController { 
    public static void cuser() { 

     AppUser user = new AppUser(); 
     user.password = "secret"; 
     user.userName = "[email protected]";  
     user.save(); 
     renderJapid(user); 
    } 
} 

以下錯誤是什麼我得到

的PersistenceException發生:org.hibernate.PropertyAccessException:無法設置由models.AppUser.uid的反射設定部字段值

play.exceptions.JavaExecutionException:org.hibernate.PropertyAccessException:無法設置字段AppUser.uid

回答

1

你APPUSER類應該是這個樣子:

@Entity 
@Table(name = "m_users") 
public class AppUser extends Model { 

    @Required 
    @MaxSize(100) 
    public @Column(name = "user_name") 
    String userName; 

    @Required 
    @MaxSize(20) 
    public @Column(name = "pass") 
    String password; 

    public AppUser(String userName, String password) { 
     this.userName = userName; 
     this.password = password; 
    } 

} 

正如你看到的,它應該擴展模式,它已經實現了價值生成的ID。

你可以閱讀更多關於here

+0

在這種情況下,如果我有另一個類說消息,我需要從用戶和用戶引用。 ??? – 2011-12-28 06:17:26

+0

看看上面的答案中提到的頁面上的Post類,並注意@ManyToOne註釋.... – PrimosK 2011-12-28 14:51:04

+0

@PrimosK我有類似的問題。你願意幫助我嗎?這裏是鏈接:http://stackoverflow.com/questions/25295695/could-not-set-a-field-value-by-reflection-setter – CodeMed 2014-08-13 20:59:16

1

聽起來好像Hibernate正在爲您的uid屬性尋找setter。你是否提供了這個二傳手或者你是否打算直接訪問公共財產?