2009-09-18 17 views
3

私たちはJPAを介してエンティティをマップするためにhibernate entitymanagerを使用しています。また、ユニットテストにHSQLDBインメモリデータベースを使用しています。テーブルがHibernateとHSQLDBで見つからない

17:55:48.516 [main] WARN o.h.util.JDBCExceptionReporter - SQL Error: -22, SQLState: S0002 
17:55:48.517 [main] ERROR o.h.util.JDBCExceptionReporter - Table not found in statement 

私は疑問にSQLを投稿することはできませんが、誰かが私に上記のエラーの原因についてのポインタを与えることができます:すべては、モデルへの最近のリファクタリングは、次のエラーを引き起こし始めるまで大丈夫でしたか?特にコードが以前に動作していたことを知っているからです。それは、リバーサのために休止状態が無効なsqlsを生成しているようですね?

答えて

2

実際にはテーブルは実際にありますか? HibernateのSQL出力を有効にし、実際のデータベーススキーマと照合して確認します。

あなたのリファクタリングがしくじっされている可能性があり(エンティティとテーブルの名前が変更された。名前付きクエリは更新されませんでした)。

それとも、読み込むべき間違った注釈を引き起こして、クラスパスに、古いクラス(ES)どこかであってもよいです。

+3

は、エンティティは、テーブルの作成が失敗する原因、予約語に指名されたが判明します。 – shipmaster

+0

予約語 - 私は同じ問題を抱えていました! –

3

また、これはJDBCドライバとHibernateの方言の間のミスマッチを示す可能性があります。

JDBCドライバー接続はHSQLDBたとき、我々はこれを持って、Hibernateの方言はorg.hibernate.dialect.Oracle10gDialectました。

対応する例外メッセージ: [ERROR]:データベースのメタデータ java.sql.SQLExceptionを得ることができませんでした:表計算書には見られないが、[ALL_SEQUENCESからSEQUENCE_NAMEを選択]

+0

そしてどうやってそれを解決しましたか? – dvtoever

+0

HibernateはSQL Dialectを設定する必要があります。 jdbc uriで構成されたデータベースベンダーと一致する必要があります。 特定のSQL方言を使用するHibernateセッション・ファクトリーを形作る方法の 例がここで見つけることができます:http://docs.jboss.org/hibernate/orm/4.3/manual/en-US/html/ch01.html# tutorial-firstapp-configuration –

1

私は、私の場合には、あまりにもこの問題を抱えていました私は、エンティティ

@Columnにこのような何かを持っていた(名前= "AVAIL_TARGET_PERCENT"、columnDefinitionは= "数(5,2)"、NULL可能= false)を

だけcolumnDefinitionを(それを取る!)を避けますあなたは大丈夫でしょう。私はそれをして、問題は修正されました

1

私たちも同じ例外を受けていました。プロパティhibernate.dialectが、H2データベースをデータソースとして提供するorg.hibernate.dialect.Oracle10gDialectとして設定されています。この問題を解決するには、hibernate.dialectを削除し、値を使用しないでください。方言自動検出オートに機能が冬眠方法の詳細については、データソース構成
から取得方言ベースのメタデータを検出している休止状態
https://docs.jboss.org/hibernate/orm/3.6/reference/en-US/html/portability.html

関連する問題