2011-12-27 50 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。你是否提供了这个二传手或者你是否打算直接访问公共财产?