使用DataType.LONG_STRING属性值保持为SQL类型LONGVARCHAR,处理更长的字符串。
但是,我想将字段映射到SQL类型TEXT。
@DatabaseField(dataType = DataType.LONG_STRING)
String comment;
由于存在difference between LONGVARCHAR and TEXT SQL Type,因此DataType.LONG_STRING值无法解决问题
答案 0 :(得分:2)
因此,默认情况下,LONG_STRING
类型应该生成TEXT
作为模式 - 例如Postgres和MySQL。你使用什么数据库类型? Derby会生成LONG VARCHAR
,Hsqldb LONGVARCHAR
和Oracle LONG
。我认为这是出于兼容性原因。
有两种方法可以覆盖ORMLite生成的架构。最简单的方法是使用columnDefinition
part of the @DatabaseField
:
@DatabaseField(columnDefinition = "TEXT")
String comment;
如果要对数据库兼容性代码进行更复杂的更改,还可以覆盖正在使用的DatabaseType
。在这种情况下,您可以覆盖appendLongStringType(...)
方法以生成不同的架构。我会覆盖DerbyDatabaseType
或您正在使用的任何数据库,然后添加如下内容:
@Override
protected void appendLongStringType(StringBuilder sb, FieldType fieldType,
int fieldWidth) {
sb.append("TEXT");
}