実稼働環境ではHibernateとPostgreSQLを、テストではHSQLDBを使用する際に問題があります。
私は、Hibernateがデータベーススキーマを作成できるように、トップダウンアプローチを使用しています。
私も注釈を使用しています。 hibernate.cfg.xmlのマッピングの一部にのみいくつかのケースでは私のために十分ではありませんPostgreSQLの上(255)を変化させる文字に
<mapping class="package.subpackage.ClassName" />
Hibernateはデフォルトの文字列変数のような行が含まれているので、私は手動で
を使用して、いくつかの列を再定義する必要があります@Column(columnDefinition = "TEXT")
。
ただし、TEXTタイプはHSQLDBでは無効です。したがって、これらのテーブルは作成できません。
これを解決するお手伝いができますか?Hibernate postgresql/hsqldb TEXTカラムの非互換性の問題
答えて
この特定の問題に対処する最も簡単な方法は全くcolumnDefinitionを使用しないように、代わりに明示的に(例えば)で列の長さを指定するには、おそらく
@Column(length=10000)
また、あなたが代わりにできたのかもしれません @Lob(type = LobType.CLOB)
でマップしますが、HSQLDBで正しくサポートされているかどうかはわかりません。 Postgresでは、あなたのTEXT型を与えるはずです。
ええ、やっぱり、長さはトリックです! – Nemanja
はい、これは最も単純な解決策ですが、私はpostgres互換モードでHSQLDBを使用することをお勧めします。 –
はい、あなたはが本当に大きいです問題です。
テスト用に1つのデータベースエンジンを使用しないでください。
あなたが夢にも思わなかった問題を打つことができます。
ええ、ありがとう、私はそれを念頭に置いて、テストを整理して両方のデータベースで簡単に実行できるようにしました。しかし、最近私はこの小さな変化を経験し、hsqldbは問題を作り始めました。 – Nemanja
はい、いいえ**テスト環境**は本番環境とまったく同じです**。しかし、単体テストはまったく違っています。つまり、Apache DerbyやHSQLDBのようなメモリ内データベースの使用は完全にうまくいきます。そしてそれは何ですか?多くの利点があります。 –
このコメントは、多くの環境で成果物を展開する必要のあるプロジェクトの種類を考慮して、テストや本番用に複数のデータベースエンジンを使用する場合に最も適しています。 –
HSQLDB 2.1以降では、PostgreSQL互換モードがあり、このモードでTEXTデータ型をサポートしています。
@fredtと同意します。 TEXTデータ型は標準のSQL型ではありませんが、一部のエンジンでサポートされている拡張機能です。
有効にするにはPostgreSQL互換モードを接続パラメータにsql.syntax_pgs=true
を使用してください。
H2をPostgreSQLとの互換性モードで動作させるには(junitテストに便利です)。
# JDBC Driver
jdbc.driverClassName=org.h2.Driver
jdbc.url=jdbc:h2:mem:play;MODE=PostgreSQL;TRACE_LEVEL_SYSTEM_OUT=2;DB_CLOSE_DELAY=-1;IGNORECASE=TRUE;INIT=CREATE TABLE IF NOT EXISTS PG_CLASS (RELNAME text, RELKIND text);
jdbc.username=sa
jdbc.password=
# general hibernate options
hibernate.database=h2
hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect
Hibernate/JPAが正しく機能するためには、create table PG_CLASSが必要です。しかし、それ以外のものはかなりシームレスです。
- 1. Liferay 7 hibernate dialect互換性問題
- 2. ブラウザの非互換性の問題
- 3. Winsock互換性の問題
- 4. Internate Explorer互換性問題
- 5. IE8互換性問題
- 6. JacksonライブラリーのHadoopとDruidの非互換性の問題
- 7. MATLAB 6.1のWindows7の非互換性の問題
- 8. Perlの非互換性の問題 - 5.14→5.8.8
- 9. debugbarとsweetalertプラグインの非互換性問題
- 10. IE7のサイドメニューの互換性の問題
- 11. Safariのアニメーションの互換性の問題
- 12. FirefoxのDivの互換性の問題
- 13. vC++の互換性の問題
- 14. IEの互換性の問題
- 15. 音響モデルの互換性の問題
- 16. iScrollのKindle Fire互換性の問題
- 17. Drupal:IEの互換性の問題
- 18. iTextの互換性の問題
- 19. scrollTop = 0ブラウザの互換性の問題
- 20. Javaバージョンの互換性の問題
- 21. ウェブブラウザのウェブブラウザとの互換性問題
- 22. Android UIの互換性の問題
- 23. Pythonの互換性の問題?
- 24. VAAPIの互換性の問題
- 25. CSSフレックスボックスブラウザの互換性の問題
- 26. CoreBluetoothの互換性の問題
- 27. Opera miniの互換性の問題
- 28. PHPの互換性の問題?
- 29. ブラックベリーの互換性の問題
- 30. クロスブラウザの互換性の問題
また、テストにPostgresを使用しようとしましたか?はいの場合、あなたはどのような問題を抱えていますか? –
はい、私はPostgresを使ってテストしています。問題はありません。hsqldbの非互換性の問題のみ – Nemanja