Playframework 在play framework controller中使用pojo绑定时出现持久性异常
我拥有以下实体:Playframework 在play framework controller中使用pojo绑定时出现持久性异常,playframework,Playframework,我拥有以下实体: @Entity public class Client extends Model{ public String email; public String password; } 我有以下控制器: public static void clientSignUp(models.Client client) { info("Client email" + client.email); info("Client password" + client
@Entity
public class Client extends Model{
public String email;
public String password;
}
我有以下控制器:
public static void clientSignUp(models.Client client)
{
info("Client email" + client.email);
info("Client password" + client.password);
client.create();
}
调用此控制器时,两个日志将正确打印出来。但是client.create行错误与此hibernate异常:
PersistenceException occured : org.hibernate.PropertyAccessException:
could not get a field value by reflection getter of models.Client.email
但是,当我将代码稍微更改为:
public static void clientSignUp(models.Client client)
{
models.Client client2 = new Client();
client2.email= client.email;
client2.password = client.password;
client2.create();
}
它起作用了。知道为什么吗?如果您更改
client.create()在您的第一个版本中,将code>转换为client.save()代码>?我想这里有个bug。
我通过调用.merge()而不是.save()解决了一个类似的问题(得到了相同的异常——在我的例子中是user.email)
之后,我可以实际删除merge()并使用save(),这非常奇怪(即使在服务器重新启动之后)。
必须缓存某些内容
所以,试试client.merge()我回答这个问题可能晚了几个月,但我遇到了类似的问题,并且能够解决它。为了获得正确的上下文,以下是我的环境:
我在引导作业中初始化模型实例
我处于开发模式,因此使用内存中的数据库(db=mem
)
我尝试了上面所有的选项(.create()
,.save()
,.merge()
)-这些都不适合我。应用程序也没有重新启动
最后,诀窍是清除/tmp
目录并重新启动应用程序