2012-03-12 1 views
0

私はPlayのyabeチュートリアルをPostgresに接続しようとしています。PlayのYabeチュートリアルでPostgresを使用する

私は矢部アプリで何かを投稿する特定のユーザーとしてログインしようと、

私はこの次のエラーを取得する、

JPAQueryExceptionが発生しました:エラーをmodels.Userところ、電子メールからクエリの実行中に=?そして、パスワード=?ERROR:コラムuser0_.idはポジションが存在しません:8つの

私のユーザモデルクラスを私はconnectメソッドの中で、このエラーを取得する

@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; 
} 

} `

、以下の通りであります"return find(" byEmailAndPassword "、電子メール、パスワード).first();"ライン。

私は次のクエリを使用してPostgresの中でテーブルを作成し、

表 "ユーザー"( のid SERIAL、 電子メールはvarchar(255)、NOT NULL、 パスワードはvarchar(255)、NOT NULL、 フルネームvarchar型を作成します(255)NOT NULL、 isAdmin boolean NOT NULL、 主キー(id) );

私はこのフレームワークとmvcスタイルが新しく、エラーが何であるか分かりません。誰でもこの問題を解決するために何をすべきか教えてくれますか?矢部チュートリアルで指定され

おかげ

答えて

1

ここにいくつかのこと...

  1. あなたは、Modelクラスを拡張していますか?

  2. なぜ自分でテーブルを作成していますか?再生すると、Hibernateを介してデータベーステーブルが作成されます。

データベーステーブルを削除し、Playで作成するようにしてください。これでもまだ失敗した場合は、使用しているデータベースのHibernate方言に問題があることがよくあります。 application.confファイルのPostgres Dialectを使用していることを確認してください。

1

自分でテーブルを作成するのが賢明だったのかどうかわかりません。問題は、ユーザーが保護された単語であることです。単純にテーブルの別の名前を選択して休止状態にすると、あなたのために残りの作業をするようにすると、はるかに簡単です。 私は

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

を選択しても問題ありません。

0

答えとしてNiels。

私は以下を追加します:DDLに大文字/小文字の区別がない名前を使用しないでください。

同じ方法で、DLLにBLANKSを使用しないでください。 要約すると、オブジェクトの名前(表、列など)をカプセル化しないでください。

私はBusiness Analystによって設計されたデータベースと、すべてのテーブルと列の名前を実際に明示しています。

select "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" and "USER ROLE"."ROLE NAME" = 'ADMINISTRATOR'

これは実際のケースです。同じことをもう一度見たいとは思わない。

関連する問題