Я пытаюсь отобразить объект, содержащий коллекцию, без использования JoinTable.
Исключение, которое я продолжаю иметь:
org.hibernate.AnnotationException: использование @OneToMany или @ManyToMany для таргетинга на несопоставленный класс: Foo.collection [java.lang.String]
Я знаю, что он работает с JoinTable, но потом я получаю 2 таблицы, а мне нужна только одна таблица. Я знаю, что если бы это сработало, то в таблице было бы много раз «имя» (по одному для каждого элемента в коллекции).
Я посмотрел в документации (http://docs.jboss.org/hibernate/annotations/3.5/reference/en/html/entity.html#entity-mapping-association см. Раздел: 2.2.5.3.1.2. Однонаправленный и http://docs.oracle.com/javaee/6/api/javax/persistence/OneToMany.html)and много примеров, но пока не могу найти, что я делаю неправильно :(
Я также нашел много вопросов по этой проблеме, где общий ответ - использовать JoinTable, но это не то решение, которое я ищу.
Я пытаюсь поиграть с ним, например, используя @JoinColumn (name = "ID", referencedColumnName = "NAME"), но безрезультатно.
Я использую Java6, jpa2, hibernate 3.5.4. и MySql
Любой совет?
Заранее спасибо,
Баба
@Entity
@Table(name = "T1")
public class Foo {
private long id;
private String name;
protected Collection<String> collection;
@Id
@GeneratedValue
@Column(name = "ID")
public long getId() {
return id;
}
@Basic
@Column(name = "NAME", nullable = false, unique = true)
public String getName() {
return name;
}
@Column(name = "COLLECTION")
@OneToMany(cascade = CascadeType.ALL)
@JoinColumn(name = "ID")
public Collection<String> getCollection() {
return collection;
}
/*
* setters...
*/
}