2017-10-18 9 views
0

Comment insérer des données de type java.util.Set dans la colonne mysql db de type set (type set mysql)?Comment insérer des données de type java.util.Set dans ma base de données sql avec une colonne de type set utilisant ibatis?

Mon POJO:

public class UserTEO 
{ 
    private Integer id; 
    private Set changedfieldset; 
    //getters and setters 
} 

fichier xml:

<sqlMap namespace="user"> 

    <typeAlias alias="USER" type="com.howtodoinjava.ibatis.demo.dto.UserTEO" /> 
    <insert id="addUser" parameterClass="USER"> 
     INSERT INTO USERINFO (ID,CHANGEDFIELDSET) 
     VALUES(#id#,#changedfieldset#); 
    </insert> 
</sqlMap> 
base de données

:

CREATE TABLE USERINFO 
(
    ID INT, 
    CHANGEDFIELDSET SET('') 
); 

Exception:

com.ibatis.common.jdbc.exception.NestedSQLException: 
--- The error occurred in user.xml. 
--- The error occurred while applying a parameter map. 
--- Check the user.addUser-InlineParameterMap. 
--- Check the parameter mapping for the 'changedfieldset' property. 

S'il vous plaît aider. Merci !

Répondre

1

Je suppose que vous voulez explicitement travailler avec (vieux) ibatis et non avec Mybatis. Voici donc le documentation auquel j'ai fait référence. Le Mysql SET attend une chaîne de valeurs de set séparées par des virgules et sans espaces blancs: StringUtils.join(set, ","). Vous devez donc utiliser un gestionnaire de type pour transformer le jeu Java en cette chaîne: Étendre BaseTypeHandler, en remplaçant spécifiquement la méthode setParameter.

appellent ensuite comme suit:

INSERT INTO USERINFO (ID,CHANGEDFIELDSET) 
     VALUES(#id#,#changedfieldset,handler=YourCustomTypeHandlerTypeAlias#) 
+0

superbe! Merci ! Pendant ce temps, j'ai changé le getter de mon Set pour retourner la chaîne qui fonctionnait bien. Mais c'est la solution authentique. Merci mon pote . – iAmLearning