Как сохранить коллекцию примитивного типа (String) в базе данных
Я пытаюсь сопоставить свои классы с базой данных SQLite, используя ORMLite, и у меня проблемы с хранением коллекции строк, у меня есть эта ошибка:
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;
...
}
поле, о котором идет речь, это языки!
1 ответ
Да, вы не можете просто сделать набор строк. Вам нужно будет создать класс-оболочку с String
поле в нем, а также иностранный Parameters
поле:
public class Language {
@DatabaseField(generatedId = true)
int id;
@DatabaseField
String language;
@DatabaseField(foreign = true)
Parameters parameters;
}
Вот описание зарубежных коллекций от FM. Цитировать:
Помните, что когда у вас есть поле ForeignCollection, класс в коллекции должен (в этом примере Order) должен иметь внешнее поле для класса, который имеет коллекцию (в этом примере Account). Если Учетная запись имеет иностранную коллекцию Приказов, то Заказ должен иметь внешнее поле Учетной записи. Это необходимо для того, чтобы ORMLite мог найти заказы, которые соответствуют определенной учетной записи.