2010-09-29 31 views
5

Possible Duplicate:
Hibernate: different object with the same identifier value was already associated with the sessionHibernate: No se pudo sincronizar el estado de base de datos con la sesión

Al tratar de insertar una nueva entrada a una de muchos a muchos tabla asociada, que estoy recibiendo este error: Could not synchronize database state with session puedo entender que esto es algo que se ocupa de getSession() & session.close()

Pero no puedo descifrarlo exactamente. Para cada transacción, estoy creando una nueva sesión. Pero cierro todas las sesiones en el cierre de sesión del usuario. es decir: la creación de una sesión de hibernación & lo vincula con HttpSession. Entonces lo destruyo en el cierre de sesión del usuario.

Algunas veces después de trabajar en este tema, aparece el error a different object with the same identifier value was already associated with the session:.

Todos estos errores provienen de no abrir correctamente & sesiones de cierre.

Qué método prefiere para abrir y cerrar sesiones. Mi proyecto fue crear una aplicación web. Todos los movimientos en esa aplicación web se refieren a DB.

Cualquier sugerencia !!!

Respuesta

10

a different object with the same identifier value was already associated with the session

Hibernate rastrea los objetos mapeados trabajó en el seno de una sesión para que pueda detectar cualquier cambio realizado en estos objetos y escribirlos de nuevo a la base de datos cuando se confirme la transacción. Si se le permitiera agregar diferentes objetos con el mismo objeto identificador de base de datos a una sesión, sería ambiguo qué estado del objeto debería escribirse.

Working with objects del manual de referencia de hibernación explica esto (y formas de resolverlo) en detalle. De particular interés es la sección titulada "Modificación de objetos separados", pero también será necesario leer la introducción para comprender los términos utilizados.

Cuestiones relacionadas