您好我使用的是ORMLite 4.33。
我有一个实体类在尝试destroyTable时给出了一个错误:
E/AndroidRuntime(6715): java.lang.IllegalArgumentException: Field class
java.lang.String for field FieldType:name=udm,class=Prodotti is not valid
for data persister com.j256.ormlite.field.types.EnumStringType@40a3a2e0
这是班级
@DatabaseTable(tableName = "Prodotti")
public class Prodotti extends BaseDaoEnabled{
....
@DatabaseField(dataType = DataType.ENUM_STRING,
columnDefinition="VARCHAR(100) DEFAULT NULL")
//also tried @DatabaseField(dataType = DataType.ENUM_STRING)
private String udm;
...
}
我运行DatabaseConfigUtil来更新ormlite_config.txt,现在我认为唯一的解决方案是将字段类型更改为String
答案 0 :(得分:5)
ORMLite不支持仅由几种数据库类型支持的数据库SQL枚举列。 ENUM_STRING
应该保持枚举类型。类似的东西:
@DatabaseField
private OurEnum udm;
...
public enum OurEnum {
RED, GREEN, BLUE;
}
默认情况下,ORMLite会将枚举作为VARCHAR
SQL字段中的字符串值(RED,GREEN,BLUE)保留。如果您有String
字段,那么您应该将其保留为STRING
类型。如果您想要存储其值,也可以使用DataType.ENUM_INTEGER
但不建议出于向后兼容性原因。
如果您编辑问题以更好地解释您想要完成的内容,我可以编辑我的答案以提供更多信息。