Hibernate Exception: Попытка отобразить коллекцию OneToMany без JoinTable - PullRequest
0 голосов
/ 05 марта 2012

Я пытаюсь отобразить объект, содержащий коллекцию, без использования 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...
     */
}

1 Ответ

2 голосов
/ 05 марта 2012

Это в документах Hibernate.

@ElementCollection
@CollectionTable(name="Nicknames", joinColumns=@JoinColumn(name="user_id"))
@Column(name="nickname")
public Set<String> getNicknames() { ... } 
...