1

Oracle 10g DB からデータを取得しようとしています。そのため、application.confファイルにdb関連の詳細を追加しました。サーバーを起動すると、コマンドプロンプトで接続が成功したことが示されます。

Entity クラスを作成しました。クラス名に似たテーブルがデータベースに存在します。

Query query = JPA.em().createQuery("select * from Emp");
    List<Emp> empList = query.getResultList();
    for(Emp employees : empList)
        System.out.println(employees.emp_name);

コードを実行しようとすると、次の例外が発生します。

IllegalArgumentException occured : org.hibernate.hql.ast.QuerySyntaxException: unexpected token: * near line 1, column 8 [select * from models.Emp]

編集:

コードを次のように変更すると:

List<Emp> empList = Emp.all().fetch();
    for(Emp employees : empList)
        System.out.println(employees.emp_name);

次に、例外が発生します。

JPAQueryException occured : Error while executing query from models.Emp: ORA-00904: "EMP0_"."ID": invalid identifier

これは、Emp.java という名前のモデル クラスです。

package models;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;

import play.data.validation.Required;
import play.db.jpa.Model;

@Entity
public class Emp extends Model {

@Id
@Column(name="Emp_Id")
public Integer id;
public String emp_name;
public Integer dept_id;
public Integer age;
public String sex;

}

これは、empいくつかのデータを含む Oracle DB に存在するテーブルです。

EMP_ID  NUMBER. EMP_NAME VARCHAR2(20), DEPT_ID NUMBER, AGE NUMBER, SEX VARCHAR2(6)

この問題の理由を認識していなかったので、このスレッドの見出しを言い換えました。

これを解決する方法を教えてください。

4

2 に答える 2

1

私は次のことをします: List<Emp> empList = Emp.findAll();

しかし、これが実際の問題だとは思いません。問題は、db テーブルへのマッピングのどこかにあります。エラー メッセージ:

`JPAQueryException occured : Error while executing query from models.Emp: ORA-00904:        "EMP0_"."ID": invalid identifier`

実際のクエリが、必要な実際の列ではなく列「ID」をフェッチしようとしていることを意味します(注釈によると@Column(name="Emp_Id"))。

注釈が期待どおりに機能しません。大文字/小文字の問題でしょうか?

編集された応答:

モデル クラス EMP は、一意の識別子 ID を生成する playframework 親モデル クラスから継承します。これはおそらくあなたの問題を引き起こしています。

于 2013-01-26T10:25:09.357 に答える
1

これを行う遊び方は

List<Emp> empList = Emp.all().fetch();
于 2013-01-25T19:05:25.223 に答える