Playframework 在Play的Yabe教程中使用Postgres

Playframework 在Play的Yabe教程中使用Postgres,playframework,Playframework,我正在尝试将该剧的yabe教程与Postgres联系起来 当我尝试以特定用户身份登录,在Yabe应用程序中发布内容时 我得到以下错误: JPAQueryException发生:从模型执行查询时出错。用户where email=?密码=?:错误:列user0\uID不存在位置:8 我的用户模型类如下所示 @Email @Required public String email; @Required public String password; public String fullname; p

我正在尝试将该剧的yabe教程与Postgres联系起来

当我尝试以特定用户身份登录,在Yabe应用程序中发布内容时

我得到以下错误:

JPAQueryException发生:从模型执行查询时出错。用户where email=?密码=?:错误:列user0\uID不存在位置:8

我的用户模型类如下所示

@Email
@Required
public String email;

@Required
public String password;
public String fullname;
public boolean isAdmin;

public User(String email, String password, String fullname) {
    this.email = email;
    this.password = password;
    this.fullname = fullname;
}

public static User connect(String email, String password) {
    return find("byEmailAndPassword", email, password).first();
    //return find("Select u from User u where u.email = ? and u.password = ?", email, password).first();
}

public String toString(){
    return email;
}
}`

我在connect方法的返回findbyEmailAndPassword、email、password.first中得到这个错误;线路

我使用以下查询在Postgres中创建了表

创建表用户 id序列号, 电子邮件varchar255不为空, 密码varchar255不为空, fullname varchar255不为空, isAdmin布尔值不为空, 主键ID ;

我不熟悉这个框架和mvc风格,不知道错误是什么。有人能告诉我应该怎么做才能解决这个问题吗

谢谢这里的几件事

是否按照YABE教程中的规定扩展模型类

你为什么要自己创建表呢。播放时,通过Hibernate将为您创建数据库表


尝试删除数据库表并让Play为您创建它。如果这仍然失败,那么您正在使用的数据库的Hibernate方言通常会出现问题。确保您在application.conf文件中使用的是Postgres方言。

我不确定自己创建表是否明智。问题是用户是一个受保护的字。如果您简单地为表选择一个不同的名称,让hibernate为您完成其余的工作,那么就容易多了。 我选择

这对我来说很好。

答案是尼尔斯

我将添加以下内容:不要在DDL中使用区分大小写的名称

同样,不要在DLL中使用空格 总结一下,不要封装对象的名称、表、列等。。。中间

我见过一个由业务分析师设计的数据库,所有表和列的名称都是显式的:带空格的完全显式复合名称。我们必须有这样的疑问:

选择USER IDENTITY.USER FIRSTNAME、USER IDENTITY.USER LASTNAME,用户标识。用户标识中的用户年龄,用户 角色,其中USER IDENTITY.ROLE ID=用户角色。角色ID和 用户角色。角色名称='管理员'

这真是一个真实的案例!不想再看到同样的事情

@Entity(name="YabeUser")
public class User extends Model {