2009-05-26 3 views
1

У меня есть два связанных сущностей, скажетКак обновить отношение типа коллекции с mappedBy в Hibernate?

@Entity 
public class Book { 
    @ManyToOne 
    Shelf shelf; 
} 

@Entity 
public class Shelf { 
    @OneToMany(mappedBy="shelf") 
    Set<Book> books; 
} 

Если я принести пустую полку (не книг), создавать и упорствовать новую книгу на полку, а затем снова извлечь эту полку, его коллекция книг пуста. Когда я запускаю его с протоколом отладки, я вижу, что Hibernate не ищет полку во второй раз, он просто возвращает ее из кеша сеанса, где он не знает, что коллекция книг обновлена.

Как я могу избавиться от эффекта и получить обновленное состояние полки?

Thanks,
Artem.

+0

проблема решена? – Schildmeijer

ответ

2

Похоже, вы должны держать его вручную в рамках одного сеанса (транзакции). Ни @Cascade, ни EAGER влияют на кеш сеанса

1

Попробуйте установить тип нетерпеливый для книг, установленных в шельфовом выборки:

@Entity 
public class Shelf { 
    @OneToMany(mappedBy="shelf",fetch=FetchType.EAGER) 
    Set<Book> books; 
} 
+0

Я не хочу, чтобы он был нетерпелив. Это плохо отразилось на производительности – artemb

1

ли @Cascade то, что вы ищете?

+1

Звучит так, как будто есть, но я не могу заставить его работать. Какой CascadeType следует использовать? – artemb

+0

Каскад здесь не помогает –