使用Postgres和Play的Yabe教程

时间:2012-03-12 10:06:53

标签: playframework

我正在尝试将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风格的新手,并且不知道错误是什么。任何人都可以指导我应该采取什么措施来解决这个问题?

由于

3 个答案:

答案 0 :(得分:1)

这里有一些事情......

  1. 您是否按照YABE教程中的规定扩展了Model类?

  2. 为什么要自己创建表格。播放,通过Hibernate将为您创建数据库表。

  3. 尝试删除数据库表,然后让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“和   “用户角色”。“角色名称”=“管理员”

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