我试图使用ORMLite将我的类映射到SQLite数据库,但是我很难存储String的集合我有这个错误:
java.lang.IllegalArgumentException: No fields have a DatabaseField annotation in
class java.lang.String
这个错误是自解释的但是我如何存储字符串集合应该扩展String类并添加所需的注释以便这样做? 在该字段的注释中我添加了datatype.serializable但是它也不起作用。 这是我的课程,我遇到了问题:
@DatabaseTable(tableName = "parameters")
public class Parameters {
// id is generated by the database and set on the object automagically
@DatabaseField(generatedId = true)
int id_parameters;
@DatabaseField(canBeNull = true)
@JsonProperty("id")
private Integer id;
@DatabaseField(canBeNull = false)
@JsonProperty("account_id")
private Integer account_id;
@ForeignCollectionField
@JsonProperty("languages")
private Collection<String> languages;
...
}
有问题的字段是语言!
答案 0 :(得分:4)
是的,你不能只做一个字符串集合。您需要创建一个包含String
字段的包装类以及外部Parameters
字段:
public class Language {
@DatabaseField(generatedId = true)
int id;
@DatabaseField
String language;
@DatabaseField(foreign = true)
Parameters parameters;
}
这是来自FM的description of foreign collections。引用:
请记住,当您拥有ForeignCollection字段时,集合中的类必须(在此示例中为Order)必须具有包含该集合的类的外部字段(在此示例中为Account)。如果Account有一个外国的Orders集合,那么Order必须有一个Account外部字段。这是必需的,因此ORMLite可以找到与特定帐户匹配的订单。