zdravim konferenciu,

mohol by som poprosit niekoho kto sa stretol s nasledujucou chybou aby mi objasnil o co ide:

Illegal attempt to associate a collection with two open sessions; nested exception is org.hibernate.HibernateException: Illegal attempt to associate a collection with two open sessions org.springframework.orm.hibernate3.HibernateSystemException: Illegal attempt to associate a collection with two open sessions; nested exception is org.hibernate.HibernateException: Illegal attempt to associate a collection with two open sessions at org.springframework.orm.hibernate3.SessionFactoryUtils.convertHibernateAccessException(SessionFactoryUtils.java:659) at org.springframework.orm.hibernate3.HibernateAccessor.convertHibernateAccessException(HibernateAccessor.java:412) at org.springframework.orm.hibernate3.HibernateTemplate.execute(HibernateTemplate.java:378)
   at org.springframework.orm.hibernate3.HibernateTemplate.saveOrUpdate

pozrel som si nasledovny prispevok na fore pre Hibernate, ale nie som z toho velmi mudry: http://forum.springframework.org/showthread.php?t=26782

uvedena chyba sa objavuje ked pouzivam vo funkcii:

protected Object formBackingObject(HttpServletRequest request) throws Exception {

jeden "manazer" (service) pre jeden objekt na ziskanie objektu (oznacme ho A) podla ID-cka predaneho v HTTP requeste, vytvorim formularovy objekt a tento ziskany objekt A umiestnim do formularoveho objektu formularovyObjekt.setObjekt(A) a nasledne vo funkcii

public ModelAndView onSubmit(HttpServletRequest request, HttpServletResponse response, Object command, BindException errors) throws ServletException {

zavolam funkciu manazera na ulozenie druheho (formularoveho) objektu.

este dodam ze pouzivam na ukladanie objektov pomocou hibernate nalsedovnu konstrukciu:

getHibernateTemplate().saveOrUpdate(objekt);
getHibernateTemplate().flush();

mapovanie v Hibernate hlavny (formularovy) objekt:

@ManyToOne (fetch = FetchType.LAZY, cascade = CascadeType.ALL)
@JoinColumn(name = "fk_objekt_a_id", nullable = false)
private Objekt objekt;

teda vlastne objekt A sluzi na prepojenie hlavneho formularoveho objektu a druhej tabulky (cudzi kluc).

dakujem

Ivan

Odpovedet emailem