我试图让我的应用程序在MySQL(用于生产)和H2(用于开发/测试)上运行.我的(Flyway)脚本现在几乎完全相同,除了需要为MySQL声明'LONGTEXT'的列.如果我也将它用于H2(在MySQL兼容模式下运行),我得到:
Wrong column type in public.public.customer_license for column license.
Found: clob, expected: varchar(65535)
Run Code Online (Sandbox Code Playgroud)
我的实体的Java代码:
@Column(name = "license", length = 65535)
private String m_license;
Run Code Online (Sandbox Code Playgroud)
如果我将列声明更改为VARCHAR(65535),那么它适用于H2,但不适用于MySQL:
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Column length too big for column 'license'
(max = 21845); use BLOB or TEXT instead
Run Code Online (Sandbox Code Playgroud)
我怎样才能使它适用于两者?
我有同样的问题.我使用@LobAnnotation 解决了它.这LONGTEXT在mysql表中验证正常.在内存中使用H2时,CLOB会创建一个字段.
import javax.persistence.Lob;
Run Code Online (Sandbox Code Playgroud)
...
@Lob
private String lotsOfText;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2039 次 |
| 最近记录: |