Mybatis 3.0.5 insérer/mettre à jour la déclaration de cartographie avec plusieurs entrées

Peut-être que je suis absent quelque chose d'évident, mais je ne peux pas obtenir un simple mappé instruction insert de l'exécution avec succès.

À l'aide de l'interface suivante

public interface CustomItemMapper 
{
    Integer insert(CustomItem item, @Param("extra") String someparam);
}

et suivants de mappage XML

  <insert id="insert" useGeneratedKeys="false" parameterType="map" keyProperty="id">
    insert into CustomItem (id, column2, column3, column4, column5, column6)
        values (#{id}, #{field2}, #{field3}, #{field4}, #{field5}, #{extra})
  </insert>

et ce code

SqlSessionFactory sqlSessionFactory = (SqlSessionFactory) servletContext.getAttribute("SqlSessionFactory");
SqlSession session = sqlSessionFactory.openSession();
try 
{ 
    CustomItemMapper mapper = session.getMapper(CustomItemMapper.class); 
    mapper.update(item);
    session.commit();
} 
finally 
{ 
    session.close(); 
} 

- Je obtenir la suite de la sortie de débogage:

Checked out connection 368716606 from pool.
ooo Connection Opened
==>  Executing: insert into CustomItem (id, column2, column3, column4, column5, column6) values (?, ?, ?, ?, ?, ?) 
==> Parameters: null, null, null, null, null, actual_value_of_extra(String)
xxx Connection Closed
Returned connection 368716606 to pool.

suivie par l'exception SQL (ne peut pas entrer une valeur null dans la id colonne).

Donc la seule valeur qui a été transmise correctement est extra chaîne fournie. J'ai vérifié que les noms de champ sont corrects et l'objet n'est pas nul à ce point et que les champs sont remplis correctement.

J'ai aussi essayé d'utiliser parameterType="CustomItem" au lieu de parameterType="map" mais le résultat n'a pas changé.

Je vous serais reconnaissant si quelqu'un pourrait me permettre de savoir ce que je suis en manque ici.

Merci d'avance.

PS: je suis dans le même problème avec insert, ainsi.

InformationsquelleAutor alokoko | 2011-10-05