3

休止状態でデータベースからデータを取得しようとしていますが、例外がスローされ続けます

2012-11-11 11:35:45,943 [メイン] エラー com.storage.hibernate.DatabaseAccessRequestsImpl - エラーが発生しました javax.persistence.PersistenceException: org.hibernate.exception.SQLGrammarException: クエリを実行できませんでした

@Override
public List<Trade> requestPeriod() {
    List<Trade> trades = null;
    EntityManager manager = emf.createEntityManager();
    Query query = manager.createQuery("from trade"); 
    try{
        trades = query.getResultList();
    }
    catch(PersistenceException e){
        logger.error("there was an error " + e);
    }
    catch(SQLGrammarException e){
        logger.error("there was an error " + e);
    }
    return trades;
}

使用している構文が間違っていると推測していますselect allが、周りを見回しても代替案が見つかりませんか?

ありがとう

4

2 に答える 2

10

"from Trade"Trade はマップされたクラスの名前であるため、(大文字の T)にする必要があります。

于 2012-11-11T12:01:22.123 に答える
6

JPAでは、10.2.1.1に従ってQLSELECT句が必須であることに注意してください。JPQL Select ステートメント:

select ステートメントは、次の句で構成される文字列です。

  • 選択するオブジェクトまたは値のタイプを決定する SELECT 句。

  • FROM 句。クエリの他の句で指定された式が適用されるドメインを指定する宣言を提供します。

[...]

BNF 構文では、select ステートメントは次のように定義されます。

select_statement ::= select_clause from_clause [where_clause] [groupby_clause] [having_clause] [orderby_clause]

裸のfrom Trade構文は Hibernate 固有のものであり、仕様に準拠するには、常に次を使用する必要があります。

select t from Trade t
于 2012-11-11T11:53:41.683 に答える