Java 使用ORMLite在数据库中存储枚举集合
我正在尝试使用ORMLite将枚举集合保存到数据库中。因此,在创建Dao时,我没有得到参数构造函数错误 我尝试过创建默认包构造函数,但没有帮助——我认为ORMLite需要公共构造函数,但Enum不能 我的枚举如下所示(分离的.java文件)Java 使用ORMLite在数据库中存储枚举集合,java,database,enums,ormlite,Java,Database,Enums,Ormlite,我正在尝试使用ORMLite将枚举集合保存到数据库中。因此,在创建Dao时,我没有得到参数构造函数错误 我尝试过创建默认包构造函数,但没有帮助——我认为ORMLite需要公共构造函数,但Enum不能 我的枚举如下所示(分离的.java文件) enum RankPermission{ @DatabaseField(数据类型=数据类型。枚举到字符串) 全部的 //... ; RankPermission(){} } 另一个类中的集合是 @DatabaseTable 阶级等级{ @国外收藏场 收集权
enum RankPermission{
@DatabaseField(数据类型=数据类型。枚举到字符串)
全部的
//...
;
RankPermission(){}
}
另一个类中的集合是
@DatabaseTable
阶级等级{
@国外收藏场
收集权限;
公共等级(){}
}
我得到的道的创造和错误
DaoManager.createDao(conn,Rank.class);
[23:31:12错误]:找不到类package.core.rank.RankPermission的无参数构造函数
java.lang.IllegalArgumentException:找不到类package.core.rank.RankPermission的无参数构造函数
在com.j256.ormlite.table.DatabaseTableConfig.findNoArgConstructor(DatabaseTableConfig.java:229)~[?:?]
在com.j256.ormlite.table.DatabaseTableConfig.getConstructor(DatabaseTableConfig.java:154)~[?:?]
在com.j256.ormlite.table.TableInfo.(TableInfo.java:96)~[?:?]
在com.j256.ormlite.table.TableInfo.(TableInfo.java:54)~[?:?]
在com.j256.ormlite.dao.BaseDaoImpl.initialize(BaseDaoImpl.java:156)~[?:?]
在com.j256.ormlite.dao.BaseDaoImpl.(BaseDaoImpl.java:133)~[?:?]
在com.j256.ormlite.dao.BaseDaoImpl.(BaseDaoImpl.java:112)~[?:?]
在com.j256.ormlite.dao.BaseDaoImpl$5(BaseDaoImpl.java:1044)~[?:?]
在com.j256.ormlite.dao.BaseDaoImpl.createDao(BaseDaoImpl.java:1044)~[?:?]
在com.j256.ormlite.dao.DaoManager.createDao(DaoManager.java:70)~[?:?]
在com.j256.ormlite.field.FieldType.configDaoInformation(FieldType.java:392)~[?:?]
在com.j256.ormlite.dao.BaseDaoImpl.initialize(BaseDaoImpl.java:206)~[?:?]
在com.j256.ormlite.dao.BaseDaoImpl.(BaseDaoImpl.java:133)~[?:?]
在com.j256.ormlite.dao.BaseDaoImpl.(BaseDaoImpl.java:112)~[?:?]
在com.j256.ormlite.dao.BaseDaoImpl$5(BaseDaoImpl.java:1044)~[?:?]
在com.j256.ormlite.dao.BaseDaoImpl.createDao(BaseDaoImpl.java:1044)~[?:?]
在com.j256.ormlite.dao.DaoManager.createDao(DaoManager.java:70)~[?:?]
在package.storage.yaml.db.DatabaseConnector.initDaos(DatabaseConnector.java:152)~[?:?]
我想以枚举形式保存此集合,因为解决此问题更方便,我只使用了
java.util
包中的任何集合,并设置@DatabaseField(dataType=dataType.SERIALIZABLE)
注释而不是@ForeignCollectionField
来保存序列化数据,所以现在代码是
等级{
@DatabaseField(dataType=dataType.SERIALIZABLE)
私有HashSet权限=新HashSet();
}
将HashSet
type设置为field很重要,因为ORMLite不会在set
上检测可序列化接口