1

Я пытаюсь сопоставить мои классы в SQLite базы данных с помощью ORMLite и у меня есть проблемы, чтобы сохранить коллекцию String, у меня есть эта ошибка:как хранить коллекцию примитивного типа (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; 
    ... 
} 

рассматриваемое поле является языком!

ответ

4

Да, вы не можете просто сделать набор строк. Вам нужно будет создать класс-оболочку с String поля в нем, а также иностранного Parameters поле:

public class Language { 
    @DatabaseField(generatedId = true) 
    int id; 
    @DatabaseField 
    String language; 
    @DatabaseField(foreign = true) 
    Parameters parameters; 
} 

Вот description of foreign collections от FM. Цитируйте:

Помните, что если у вас есть поле ForeignCollection, класс в коллекции должен (в данном примере Order) иметь внешнее поле для класса с коллекцией (в этом примере Account). Если у Учетной записи есть иностранная коллекция Заказов, тогда у Ордера должно быть поле с иностранной учетной записью. Требуется, чтобы ORMLite мог найти заказы, соответствующие конкретной учетной записи.

+0

благодарит за это освобождение! –

Смежные вопросы