2010-06-23 10 views
7

Beschlossen, eines meiner Projekte von iBatis nach MyBatis zu verschieben und stieß auf ein Problem mit einfügen.MyBatis 3.0.1 Problem einfügen

Mapper 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> 

Mapper Java-Datei:

public interface ArticleMapper { 
void insertTestA(); 
} 

Mapper Implementierung:

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. 

der Tabelle im Einsatz:

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

Ich versuche, dies mit Mybatis 3.0.1 Feder 3.0.3, postgresql 8.3 (mit postgresql-8.4-701.jdbc3.jar)

Ich glaube, alle Text Setup richtig eingestellt laufen (ich kann führe eine Auswahl gegen eine andere Tabellenstrafe aus.

testete ich die inser manuell und es funktioniert gut (insert into test_a (cookie) values('some stuff');)

Aus irgendeinem Grund der Einsatz nicht ausführen und keine Stack-Trace zeigt sich :-(

Irgendwelche Hinweise werden geschätzt: -)

+0

... wäre jemand nett genug, um ein Tag für 'MyBatis' zu erstellen? Ich habe einfach nicht den Ruf, das zu tun ;-) – vector

+0

off topic Ich weiß, aber ich muss das mybatis guice Plugin empfehlen, es reduziert den Kesselblech-Code und verwaltet die SQL-Sitzung für Sie. Es rockt!! http://code.google.com/p/mybatis/wiki/Guice – Andy

Antwort

14

Sie haben Ihre Transaktion nicht ausgeführt. Versuchen Sie, eine "session.commit()" hinzuzufügen.

+1

Sie haben den Tag gerettet! ICH DANKE DIR SEHR! ... reden über peinlich fühlen jetzt. Ich dachte, ich hätte die knappen Beispiele im neuen, knappen Handbuch ziemlich genau betrachtet. Stellt sich heraus session.commit() wird einmal auf Seite 56 von 64 erwähnt :-( Wie wäre es damit. Wie auch immer, nochmals vielen Dank! – vector