3

JPAを介してエンティティをマップするために、休止状態のentitymanagerを使用しています。また、単体テストには 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 を生成しているようです。

4

5 に答える 5

3

これは、JDBC ドライバーと Hibernate 方言の間の不一致を示している可能性もあります。

これは、JDBC ドライバー接続が HSQLDB で、Hibernate 方言が org.hibernate.dialect.Oracle10gDialect のときに得られました。

対応する例外メッセージ: [ERROR]: could not get database metadata java.sql.SQLException: Table not found in statement [ select sequence_name from all_sequences]

于 2012-06-07T19:15:11.010 に答える
2

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

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

または、クラスパスのどこかに古いクラスがあり、間違ったアノテーションが読み取られる可能性があります。

于 2009-09-18T02:00:48.573 に答える
2

同じ例外も発生していました。プロパティhibernate.dialectが org.hibernate.dialect.Oracle10gDialect として設定され、H2 データベースがデータソースとして機能していることがわかりました。解決策は、hibernate.dialect を削除し、値を使用しないことです。Hibernate には、データソース構成から取得されたダイアレクト ベースのメタデータを自動検出する機能があり
ます
。 html

于 2016-04-07T18:30:35.703 に答える
1

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

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

columnDefinition を避けるだけで (削除してください!)、問題ありません。私はそれをしました、そして問題は修正されました

于 2013-02-06T18:45:51.780 に答える