您好我使用的是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
Run Code Online (Sandbox Code Playgroud)
这是班级
@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;
...
}
Run Code Online (Sandbox Code Playgroud)
我运行DatabaseConfigUtil来更新ormlite_config.txt,现在我认为唯一的解决方案是将字段的类型更改为String
ORMLite不支持仅由几种数据库类型支持的数据库SQL枚举列.本ENUM_STRING应该坚持枚举类型.就像是:
@DatabaseField
private OurEnum udm;
...
public enum OurEnum {
RED, GREEN, BLUE;
}
Run Code Online (Sandbox Code Playgroud)
默认情况下,ORMLite将在枚举中将其保存为VARCHARSQL字段中的字符串值(RED,GREEN,BLUE).如果你有一个String字段,那么你应该让它作为一种STRING类型持久存在.您也可以使用DataType.ENUM_INTEGERif来存储其值,但出于向后兼容性原因,不建议这样做.
如果您编辑问题以更好地解释您要完成的任务,我可以编辑我的答案以提供更多信息.
| 归档时间: |
|
| 查看次数: |
1924 次 |
| 最近记录: |