Pregunta

Estoy usando ibatis en la primavera de escribir en MySQL.

Tengo un fallo intermitente. En cada ciclo de un proceso que escribo dos filas con el PP. El siguiente ciclo leí en las filas del ciclo anterior. A veces (una vez en 30 años, a veces con más frecuencia, a veces menos) solo me dan vuelta una fila de la db.

He apagado el almacenamiento en caché que se me ocurre. Mi sqlmap-config.xml se limita a decir:

<sqlMapConfig>
<settings enhancementEnabled="false" statementCachingEnabled="false" classInfoCacheEnabled="false"/>

<sqlMap resource="ibatis/model/cognitura_core.xml"/>

¿Hay alguna asincronía, el almacenamiento en caché o más para la primavera o el iBatis o el controlador de MySQL que me falta?

Uso de resorte 3.0.5, 2.3.5 mybatis, mysql-connector-java 5.0.5

EDIT 1:

¿Podría ser porque estoy usando un grupo de conexiones (c3p0)? ¿Es posible la inserción sigue funcionando cuando estoy leyendo. Es raro, sin embargo, pensé que todo sería ocurriendo de forma sincrónica a menos que explícitamente declaradas desincronizado?

¿Fue útil?

Solución

¿Está llamando SqlSession.commit () después de las inserciones? C3P0 forma asíncrona "se cierra" las conexiones, que puede estar llamando cometen bajo las sábanas. Eso podría explicar el comportamiento que está viendo.

Otros consejos

Me estoy poniendo un comportamiento similar. Esto es lo que estoy haciendo. Tengo una versión antigua de iBatis No planeo sobre la actualización. Puede mover esta en un decorador.

SqlMapSession session = client.openSession();
try {
    try {
        session.startTransaction();
        // do work
        session.commitTransaction();
        // The transaction should be committed now, but it doesn't always happen.
        session.getCurrentConnection().commit(); // Commit again :/
    } finally {
        session.endTransaction();
    }
} finally {
    session.close(); // would be nice if it was 'AutoCloseable'
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top