2010-06-23 12 views
7

Decidí mover uno de mis proyectos de iBatis a MyBatis y tuve un problema con la inserción.Problema de inserción de MyBatis 3.0.1

asignador xml:

<?xml version="1.0" encoding="UTF-8" ?> 
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"  
       "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> 
<mapper namespace="bap.persistance.interfaces.ArticleMapper"> 
<insert id="insertTestA"> 
    insert into test_a (cookie) values('tomek pilot'); 
</insert> 
</mapper> 

archivo asignador de Java:

public interface ArticleMapper { 
void insertTestA(); 
} 

aplicación asignador:

String resource = "bap/persistance/MyBatis_xml/MyBatisConfig.xml"; 

.... 

... 
public void createArticle(Article article) throws IOException { 
    Reader reader = Resources.getResourceAsReader(resource); 
    SqlSessionFactory sqlSessionFactory = 
      new SqlSessionFactoryBuilder().build(reader); 
    SqlSession session = sqlSessionFactory.openSession(); 

    try{ 
    ArticleMapper mapper = session.getMapper(ArticleMapper.class); 
    mapper.insertTestA(); 
    } catch(Exception e){ 
    e.printStackTrace(); 
    } finally{ 
    session.close(); 
    } 
    return article.getId(); 
} 
... 

... line omitted for brevity. 

la tabla en uso:

CREATE TABLE test_a 
(
    cookie text 
) 
WITH (OIDS=FALSE); 

estoy tratando de ejecutar este con mybatis 3.0.1, 3.0.3 primavera, PostgreSQL 8.3 (usando PostgreSQL-8.4-701.jdbc3.jar)

Creo que toda la disposición repetitivo está configurado correctamente (lo que pueda ejecutar una selección contra otra tabla bien.

probé la inser manualmente y funciona muy bien (insert into test_a (cookie) values('some stuff');)

Por alguna razón el inserto no se ejecuta y no hay seguimiento de la pila muestra hasta :-(

Alguna pista será más apreciados: -)

+0

... ¿Alguien sería tan amable de crear una etiqueta para 'MyBatis'? Simplemente no tengo la reputación de hacer eso ;-) – vector

+0

fuera del tema Sé, pero tengo que recomendar el plugin de mybatis guice, reduce el código de la placa de la caldera y gestiona la sesión de SQL para usted. Rocas !! http://code.google.com/p/mybatis/wiki/Guice – Andy

Respuesta

14

No cometió su transacción. Intente agregar un "session.commit()".

+1

¡HAS SALVADO EL DÍA! ¡MUCHAS GRACIAS! ... habla de sentirse avergonzado ahora. Creo que miré muy de cerca los pequeños ejemplos en el nuevo y escaso manual. Resulta que session.commit() se menciona una vez en la página 56 de 64 :-( Qué tal. De todos modos, ¡gracias de nuevo! – vector

Cuestiones relacionadas