我正在尝试让我的应用程序在 MySQL(用于生产)和 H2(用于开发/测试)上运行。我创建表的(Flyway)脚本现在几乎相同,除了需要为 MySQL 声明为“LONGTEXT”的列。如果我也将它用于 H2(以 MySQL 兼容模式运行),我会得到:
Wrong column type in public.public.customer_license for column license.
Found: clob, expected: varchar(65535)
我的实体的 Java 代码:
@Column(name = "license", length = 65535)
private String m_license;
如果我将列声明更改为 VARCHAR(65535),那么它适用于 H2,但不适用于 MySQL:
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Column length too big for column 'license'
(max = 21845); use BLOB or TEXT instead
如何让它同时适用于两者?
最佳答案
我遇到了同样的问题。我通过使用 @Lob
注释解决了它。这在 mysql 表中使用 LONGTEXT
验证正常。在内存中使用 H2 时,会创建一个 CLOB
字段。
import javax.persistence.Lob;
...
@Lob
private String lotsOfText;
关于java - 带有 h2 嵌入式数据库的 MySQL LONGTEXT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30348418/