通过ORMLite(不是LONGVARCHAR)保留文本SQL类型

时间:2013-05-13 07:23:11

标签: mysql ormlite sqldatatypes

使用DataType.LONG_STRING属性值保持为SQL类型LONGVARCHAR,处理更长的字符串。

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

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

由于存在difference between LONGVARCHAR and TEXT SQL Type,因此DataType.LONG_STRING值无法解决问题

1 个答案:

答案 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");
}