我正在尝试将Play的yabe教程与Postgres连接起来。
当我尝试以特定用户身份登录以在Yabe应用程序中发布内容时,
我收到以下错误,
发生了JPAQueryException:从models.User执行查询时出错,其中email =? AND password = ?: ERROR:列user0_.id不存在位置: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方法的“return find(”byEmailAndPassword“,email,password).first();”中收到此错误。“线。
我使用以下查询
在Postgres中创建了表创建表“用户”( id SERIAL, email varchar(255)NOT NULL, password varchar(255)NOT NULL, fullname varchar(255)NOT NULL, isAdmin boolean NOT NULL, 主键(id) );
我是这个框架和mvc风格的新手,并且不知道错误是什么。任何人都可以指导我应该采取什么措施来解决这个问题?
由于
答案 0 :(得分:1)
这里有一些事情......
您是否按照YABE教程中的规定扩展了Model类?
为什么要自己创建表格。播放,通过Hibernate将为您创建数据库表。
尝试删除数据库表,然后让Play为您创建。如果仍然失败,那么对于您正在使用的数据库,Hibernate方言通常会出现问题。确保您在application.conf
文件中使用Postgres Dialect。
答案 1 :(得分:1)
我不确定自己创造桌子是否聪明。问题是用户是受保护的单词。如果你简单地为表选择一个不同的名称,那么让hibernate为你完成剩下的工作会更容易。 我选择了
@Entity(name="YabeUser")
public class User extends Model {
它对我来说很好。
答案 2 :(得分:0)
Niels作为答案。
我将添加以下内容:不要在您的DDL中使用案例敏感名称。
以同样的方式不要在DLL中使用BLANKS 总结一下,不要将对象的名称(表,列,......)封装在。
之间我确实看到过Business Analyst设计的数据库以及所有真正明确的表和列名称:带有空格的完全显式复合名称。我们必须有这样的查询:
选择“USER IDENTITY”。“USER FIRSTNAME”,“USER IDENTITY”。“USER LASTNAME“,”USER IDENTITY“。”USER AGE“FROM”USER IDENTITY“,”USER ROLE“WHERE”USER IDENTITY“。”ROLE ID“=”USER ROLE“。”ROLE ID“和 “用户角色”。“角色名称”=“管理员”
这是一个真实的案例!并且不想再看到同样的事情了。