我在使用Hibernate和PostgreSQL進行生產和HSQLDB測試時遇到了問題。
我使用自頂向下的方法讓Hibernate創建數據庫模式。
我也使用註釋;的hibernate.cfg.xml的映射部僅包含上的PostgreSQL線等
<mapping class="package.subpackage.ClassName" />
休眠默認字符串變量字符改變(255),這是不夠的我在一些情況下,所以我必須重新定義使用
手動某些列@Column(columnDefinition = "TEXT")
。
但是,TEXT類型對HSQLDB無效,因此無法創建這些表。
任何人都可以幫助解決這個問題嗎?Hibernate postgresql/hsqldb TEXT列不兼容問題
回答
處理這個具體問題的最簡單的方法可能是在所有不使用columnDefinition,而是明確地與指定列長度(例如)
@Column(length=10000)
這也可能是你能代替與 @Lob(type = LobType.CLOB)
但我不確定在HSQLDB中正確支持。在Postgres中它應該給你你的TEXT類型。
是啊,thanx,長度是訣竅! – Nemanja 2010-11-18 13:30:21
是的,這是最簡單的解決方案,但我更喜歡使用HSQLDB和Postgres兼容模式。 – 2012-10-25 11:28:08
是的,你有一個真的很大問題。
不要使用一個數據庫引擎進行測試,另一個用於生產。
你可以遇到你從未夢想過的問題。
是的,thanx,我記住了這一點,並組織了測試,以便它們可以輕鬆地在兩個數據庫上運行。但最近我有了這個小小的變化,hsqldb開始出現問題。 – Nemanja 2010-11-19 10:46:58
是和否。同意測試環境**應與生產環境完全相同。但是單元測試是不同的:使用內存數據庫(如Apache Derby或HSQLDB)非常好。更重要的是:有很多優點。 – 2012-10-25 11:09:40
考慮到您必須在許多環境中部署工件的項目類型,此評論可能是使用多個數據庫引擎進行測試和生產的最佳參數。 – 2014-06-25 15:39:13
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
創建表PG_CLASS是必需的,以允許Hibernate/JPA正常工作。但除此之外 - 非常無縫。
- 1. CLS兼容問題
- 2. method =「post」enctype =「text/plain」不兼容?
- 3. -webkit-text-security兼容性
- 4. 瀏覽器兼容性問題列表?
- 5. OpenGL問題:'不兼容'vs'找不到'
- 6. 與asm和hibernate和cglib的兼容性問題......?
- 7. Spring 4.2.3.RELEASE和Hibernate 5.0.4.Final兼容性問題
- 8. Symfony 2.5.3和PHP 5.6.0:不兼容問題?
- 9. Chrome上的HTML不兼容問題
- 10. 瀏覽器不兼容問題
- 11. JavaScript的不兼容性問題與IE8
- 12. iText的兼容性問題
- 13. Crystal Reports兼容性問題
- 14. XCode:iOS兼容性問題
- 15. Google Play兼容性問題
- 16. PHP兼容性問題
- 17. javascript兼容性問題
- 18. Internate Explorer兼容性問題
- 19. CSS3兼容性問題
- 20. iPhone 4.0兼容性問題
- 21. Windows 7兼容性問題
- 22. sql ansi-92兼容問題
- 23. 兼容性問題是IE10
- 24. Safari CSS兼容性問題
- 25. 黑莓兼容性問題
- 26. ie 8兼容性問題
- 27. Javascript/jquery兼容性問題
- 28. Internet Explorer兼容性問題
- 29. IE7的兼容性問題
- 30. CoreBluetooth兼容性問題
您是否嘗試過使用Postgres進行測試呢?如果是,你遇到了什麼樣的問題? – 2010-11-18 11:49:39
是的,我也使用Postgres進行測試。沒有問題,只有hsqldb不兼容問題 – Nemanja 2010-11-19 10:49:20