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()转换为
client.save()

我想这里有个bug。 我通过调用.merge()而不是.save()解决了一个类似的问题(得到了相同的异常——在我的例子中是user.email)

之后,我可以实际删除merge()并使用save(),这非常奇怪(即使在服务器重新启动之后)。 必须缓存某些内容


所以,试试client.merge()

我回答这个问题可能晚了几个月,但我遇到了类似的问题,并且能够解决它。为了获得正确的上下文,以下是我的环境:

  • 我在引导
    作业中初始化模型实例
  • 我处于开发模式,因此使用内存中的数据库(
    db=mem
  • 我尝试了上面所有的选项(
    .create()
    .save()
    .merge()
    )-这些都不适合我。应用程序也没有重新启动

    最后,诀窍是清除
    /tmp
    目录并重新启动应用程序