Hibernate

10 views
Skip to first unread message

elguillote

unread,
Nov 22, 2006, 3:26:50 PM11/22/06
to JavaSOS
Hola listeros, tengo el siguiente problema con hibernate. Me tira la
siguiente excepcion pero no siempre en los mismos lugares de mi
aplicacion... alguien me podria ayudar (creo que tiene que ver con los
lazy de los tipos list, set,bug etc no??)

org.hibernate.HibernateException: collection was evicted
at
org.hibernate.event.def.DefaultInitializeCollectionEventListener.onInitializeCollection(DefaultInitializeCollectionEventListener.java:38)
at
org.hibernate.impl.SessionImpl.initializeCollection(SessionImpl.java:1679)
at
org.hibernate.collection.AbstractPersistentCollection.forceInitialization(AbstractPersistentCollection.java:454)
at
org.hibernate.engine.StatefulPersistenceContext.initializeNonLazyCollections(StatefulPersistenceContext.java:755)
at
org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:229)
at org.hibernate.loader.Loader.doList(Loader.java:2145)
at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2029)
at org.hibernate.loader.Loader.list(Loader.java:2024)
at
org.hibernate.loader.criteria.CriteriaLoader.list(CriteriaLoader.java:95)
at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1536)
at org.hibernate.impl.CriteriaImpl.list(CriteriaImpl.java:283)
at org.hibernate.impl.CriteriaImpl.uniqueResult(CriteriaImpl.java:305)


Desde ya mil
gracias........................!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Pablo Saavedra

unread,
Nov 22, 2006, 3:50:58 PM11/22/06
to jav...@googlegroups.com
El mensaje sugiere que la coleccion ya no está asociada a la sesion..  lo raro es que si fuera un problema de lazy te daria una LazyInitializationException.. qué es lo que estás intentando hacer en este caso en particular?

2006/11/22, elguillote <stsa...@gmail.com>:

elguillote

unread,
Nov 23, 2006, 7:45:09 AM11/23/06
to JavaSOS
Si tal vez no tenga nada que ver los lazy :P. Lo que intento hacer es
simple: un formulario llamaba a otro q se abre como pop up y usaba un
par de colecciones mapeadas con hibernate. Recalco lo del pop up porque
si abria el mismo form normalmente, este excepcion no aparecia.
de todos modos, ahora estoy usando el pop up y el error no aparece!!
como dije, es muy aleatoria la aparicion de la excepcion. Si alguien
sabe debido a que aparece, eternamente agradecido...!!!!!
(dale pablo, salvame la vida):P

Pablo Saavedra

unread,
Nov 23, 2006, 8:34:26 AM11/23/06
to jav...@googlegroups.com
Bueno, más que extraño.

Me parece que el problema son esas colecciones y el popup. Cuando abris una nueva ventana, cambia la sesion (si usas el patron OpenSessionInView), por lo que tendrías que recargar todos los objetos de nuevo tanto en el popup como cuando volves a la pantalla original.

Sin ver el código fuente no puedo decirte mucho más.
Suerte.

2006/11/23, elguillote <stsa...@gmail.com>:

elguillote

unread,
Nov 23, 2006, 11:58:40 AM11/23/06
to JavaSOS
bueno, parece q lo del pop up no tiene nada que ver... descubri que
tira la misma excepcion cuando por ejemplo, aprieto un boton de submit
que utilice en el action bean con colecciones y, mientras esta
realizando la consulta (hibernate) aprieto de nuevo el mismo boton,
automaticamente tira la excpecion y ya no vuelve a andar. De ver
código, que necesitarias ver??? son simples objetos con tipos set mas
q nada, o bug... te tiro un ejemplo para ver si hay algo mal:

public class Persona implements Serializable
{
private Integer personaId;
private String nombre;
private String nombreDos;
private String nombreMix;
private Integer docNro;
private String domicilio;
private Integer sexo;

private Direccion direccion;
private DocTipo docTipo;
private Nacionalidad nacionalidad;

private Set tlrlpersonas;
}

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping SYSTEM
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >
<hibernate-mapping>
<class name="ar.com.Persona" table="personas">
<id name="personaId" column="order_id">
<generator class="native"/>
</id>
<property name="nombre" column="nombre" type="string"/>
<property name="nombreDos" column="nombre_dos" type="string"/>
<property name="nombreMix" column="nombre_mix" type="string"/>
<property name="docNro" column="doc_nro" type="int"/>
<property name="sexo" column="sexo" type="int"/>


<component name="direccion"
class="ar.com.Direccion">
<property name="numero" column="numero" type="int"/>
<property name="piso" column="piso"
type="string"/>
<property name="dpto" column="dpto"
type="string"/>

<many-to-one
name="calle"
class="ar.com.Calle"
cascade="none"
outer-join="auto"
column="calle"
/>

<many-to-one
name="ciudad"
class="ar.com.Ciudad"
cascade="none"
outer-join="auto"
column="codigociud"
/>
</component>

<many-to-one
name="docTipo"
class="ar.com.DocTipo"
cascade="none"
outer-join="auto"
column="doc_tipo"
/>

<many-to-one
name="nacionalidad"
class="ar.com.Nacionalidad"
cascade="none"
outer-join="auto"
column="nacionalidad"
/>

<set name="tlrlpersonas" cascade="all" lazy="false">
<key column="order_rl"/>
<one-to-many class="ar.com.TlrlPersona"/>
</set>
</class>
</hibernate-mapping>

el boton de submit solo hace una busqueda con criteria...

Reply all
Reply to author
Forward
0 new messages