Исключение несохраненного экземпляра гибернации с использованием @ElementCollection

Я получаю исключение

, объект ссылается на несохраненный временный экземпляр - сохраните временный экземпляр перед сбросом

в следующем коде:

public void addThing(String key, String someData) {
    Thing thing = new Thing();
    booking.setData(someData);
    booking.setParent(this);
    bookings.put(key, thing);
}

Родительское сопоставление:

@ElementCollection(fetch=FetchType.EAGER)
@Column(name="thing", nullable=false)
@MapKeyColumn(name="key")
@JoinColumn(name="parent_id")
protected Map<String, Thing> things = Maps.newHashMap();

Дочернее ('Thing') сопоставление:

@ManyToOne
private Parent parent;

Согласно руководству Hibernate:

В ElementCollection нет каскадной опции, целевые объекты всегда сохраняются, объединяются, удаляются с их родитель.

Но - до того, как я перешел на новое отображение @ElementCollection , так что решите проблему, когда я получал явно фантомные элементы, возвращаемые для запроса, этот код работал правильно.

Я знаю, что может сохранить элемент отдельно, а затем сделать ссылку, b Но я предпочитаю, чтобы это выполнялось автоматически, и я подумал, что так и должно быть. Есть идеи?

7
задан skaffman 3 July 2011 в 13:16
поделиться