0

使用 DataType.LONG_STRING 属性值作为处理较长字符串的 SQL 类型 LONGVARCHAR 持久化。

但是,我想将该字段映射到 SQL 类型 TEXT 。

@DatabaseField(dataType = DataType.LONG_STRING)
String comment;

由于 LONGVARCHAR 和 TEXT SQL Type 之间存在差异,因此 DataType.LONG_STRING 值并不能解决问题

4

1 回答 1

2

因此,默认情况下,该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");
}
于 2013-05-13T11:51:30.617 回答