使用 DataType.LONG_STRING 属性值作为处理较长字符串的 SQL 类型 LONGVARCHAR 持久化。
但是,我想将该字段映射到 SQL 类型 TEXT 。
@DatabaseField(dataType = DataType.LONG_STRING)
String comment;
由于 LONGVARCHAR 和 TEXT SQL Type 之间存在差异,因此 DataType.LONG_STRING 值并不能解决问题
使用 DataType.LONG_STRING 属性值作为处理较长字符串的 SQL 类型 LONGVARCHAR 持久化。
但是,我想将该字段映射到 SQL 类型 TEXT 。
@DatabaseField(dataType = DataType.LONG_STRING)
String comment;
由于 LONGVARCHAR 和 TEXT SQL Type 之间存在差异,因此 DataType.LONG_STRING 值并不能解决问题
因此,默认情况下,该LONG_STRING
类型应该TEXT
作为模式生成——例如 Postgres 和 MySQL。您使用的是什么数据库类型?Derby 生成LONG VARCHAR
、HsqldbLONGVARCHAR
和 Oracle LONG
。我认为这是出于兼容性原因。
有几种方法可以覆盖ORMLite生成的模式。columnDefinition
最简单的方法是使用以下部分@DatabaseField
自己定义列:
@DatabaseField(columnDefinition = "TEXT")
String comment;
如果您对数据库兼容性代码进行更复杂的更改,您还可以覆盖DatabaseType
您正在使用的代码。在这种情况下,您可以覆盖该appendLongStringType(...)
方法以生成不同的模式。我会覆盖DerbyDatabaseType
或您正在使用的任何数据库,然后添加如下内容:
@Override
protected void appendLongStringType(StringBuilder sb, FieldType fieldType,
int fieldWidth) {
sb.append("TEXT");
}