Pregunta

Estoy usando Spring MVC 3.0 con EclipseLink y JPA y yo estoy experimentando siguiente problema: Tengo este campo en mi aplicación:

@OneToMany(mappedBy = "stadium")
private Set<FootballMatch> footballMatches = new HashSet<FootballMatch>();

cuando no se dispara alguna acción que añade nuevos elementos en conjunto a través de Set.add(), los cambios no aparece en el navegador, aunque incluya hay nuevas filas en la base de datos. Cuando puedo borrar la caché del navegador, no pasa nada. He descubierto que una manera de cómo forzar nuevos valores de carga es volver a implementar la aplicación, incluso sin cambio de línea única. Por lo que la aplicación está volviendo viejos valores, el almacenamiento en caché en alguna parte. ¿Cómo fuerzo a Allways carga valores actualizados? Estaba pensando en algo así como getLastModified(), pero no sé dónde debo ponerlo en práctica.

¿Fue útil?

Solución

Dado que es una relación bidireccional, asegúrese de que está configurando ambos lados de la relación.

Sede, http://en.wikibooks.org/wiki/Java_Persistence/Relationships#Object_corruption. 2C_one_side_of_the_relationship_is_not_updated_after_updating_the_other_side

También asegúrese de que está cambiando, la fusión, la comisión de los objetos correctos.

Trate de usar EntityManager.refresh () para actualizar el objeto, se puede conseguir los valores actualizados? Si no, entonces su base de datos no tiene los datos.

¿Está el almacenamiento en caché del EntityManager en su aplicación? Si usted tiene un viejo EntityManager alrededor de él no podrá ver los nuevos cambios. Normalmente un nuevo EntityManager se debe crear para cada solicitud / transacción.

EclipseLink mantiene una memoria caché de objetos de forma predeterminada, esto puede ser desactivada mediante la propiedad persistence.xml, "Eclipselink.caching.shared" = "true"

Sede, http://wiki.eclipse.org/EclipseLink/Examples/JPA/Caching

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top