Сохранять коллекцию полей в спящем режиме - PullRequest
8 голосов
/ 01 сентября 2009

Используя hibernate, как я могу сохранить класс с полем List<String>?

Рассмотрим следующий класс сущностей:

@Entity
public class Blog {
    private Long id;
    private List<String> list;

    @Id
    @GeneratedValue
    public Long getId() { return id; }
    public void setId(Long id) { this.id = id; }

    public List<String> getList() { return list; }
    public void setList(List<String> list) { this.list = list; }
}

Однако, когда я пытаюсь сохранить его, я получаю следующую ошибку:

[INFO] An exception occured while executing the Java class. null

Could not determine type for: java.util.List, at table: Blog, for columns: [org.hibernate.mapping.Column(list)]

Я попытался добавить '@CollectionOfElements' к getList(), но тогда только id сохраняется в библиотеке. Соответствующий столбец для списка не создан.

Примечание: я просто пробую Hibernate, поэтому я могу использовать ссылки на документацию, которые помогут мне понять управление отношениями в коллекции в Hibernate

Ответы [ 3 ]

7 голосов
/ 01 сентября 2009

Посмотрите на Это . Может быть, это поможет.

Применяли ли вы @CollectionOfElements следующим образом?

@org.hibernate.annotations.CollectionOfElements(
targetElement = java.lang.String.class

)

0 голосов
/ 01 сентября 2009

Использование Serializable объекта, кажется, работает лучше.Изменение свойства list на ArrayList<String>, похоже, решает проблему.

0 голосов
/ 01 сентября 2009

Взгляните на документацию Hibernate Аннотации о коллекциях В основном вы должны указать список, в каком отношении это стоит.

@OneToMany(mappedBy="blog")
public List<String> getList() { return list; }

Тогда это должно работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...