質問

hibernate entitymanagerを使用して、JPAを介してエンティティをマッピングしています。また、ユニットテストには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を投稿することはできませんが、上記のエラーの考えられる原因に関するポインターを教えてもらえますか?特に、以前はコードが機能していたことがわかっているので。リファクタリングのために休止状態が無効なSQLを生成しているようです?

役に立ちましたか?

解決

さて、テーブルは実際にありますか? HibernateのSQL出力を有効にし、実際のデータベーススキーマに対してチェックします。

リファクタリングが失敗した可能性があります(エンティティとテーブルの名前が変更され、名前付きクエリは更新されませんでした)。

または、クラスパスのどこかに古いクラスがあり、誤った注釈が読み取られる可能性があります。

他のヒント

これは、JDBCドライバーとHibernateダイアレクトの不一致を示している可能性もあります。

これは、JDBCドライバー接続がHSQLDBであり、Hibernateダイアレクトがorg.hibernate.dialect.Oracle10gDialectであるときに取得しました。

対応する例外メッセージ: [エラー]:データベースのメタデータを取得できませんでした java.sql.SQLException:ステートメントにテーブルが見つかりません[select sequence_name from all_sequences]

この問題もありました。私の場合、エンティティにこのようなものがありました

@Column(name =" AVAIL_TARGET_PERCENT"、columnDefinition =" number(5,2)"、nullable = false)

columnDefinitionを避けてください(取り出してください!)、大丈夫です。私はそれをしました、そして問題は修正されました

同じ例外も発生していました。プロパティー hibernate.dialect がorg.hibernate.dialect.Oracle10gDialectとして設定され、H2データベースがデータソースとして機能することがわかりました。解決策はhibernate.dialectを削除し、値を使用しないことです。 Hibernateには、データソース構成から取得した方言ベースのメタデータを自動検出する機能があります
hibernateが方言を自動検出する方法の詳細については、
https://docs.jboss.org/hibernate /orm/3.6/reference/en-US/html/portability.html

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top