Hi again..

Yes i see a very simple insert and update in the Developer Guide, but no complex, like this one
se i have an Account class and multiple Group classes for this account. and the account class has a property


ArrayList groups
getter
setter

and this property is mapped this way:

   <typeAlias alias="account" type="dk.graveyard.vod.ibatis.Account"/>
   <typeAlias alias="group" type="dk.graveyard.vod.ibatis.Group"/>

<resultMap id="accountResult" class="account">
<result property="id" column="ACCOUNT_ID"/>
<result property="name" column="ACCOUNT_NAME"/>
<result property="password" column="PASSWORD"/>
<result property="status" column="STATUS_NAME"/>
<result property="groups" column="ACCOUNT_ID" select="getGroupsByAccountId"/>
</resultMap>


   <resultMap id="groupResult" class="group">
       <result property="id" column="GROUP_ID"/>
       <result property="name" column="GROUP_NAME"/>
   </resultMap>


i cant just figure out how to map this n:m relation, for the insert and update



1 Account can have many Groups 1 Group Can belong to many Accounts


do i need to batch it with something like: updateAccount deleteAccountGroupRealtion insertNewAccountGroupRelation

every time i change an Account ??

or is there a more friendly way to do it ?




i tried a insert mapping for the relation table but......

   <insert id="insertAccountGroupsByAccount" parameterClass="account">
       <iterate property="groups">
           INSERT INTO ACCOUNT_GROUP_REF
           VALUES (
               #id#, #groups[].id#
           )
       </iterate>
   </insert>

but i get an exception:



2281 [thread-pool-98] DEBUG jdbc.SimpleDataSource - Checked out connection 19318506 from pool.
2312 [thread-pool-98] DEBUG sql.Connection - {conn-100038} Connection
2312 [thread-pool-98] DEBUG sql.PreparedStatement - {pstm-100039} PreparedStatement: INSERT INTO ACCOUNT_GROUP_REF VALUES( ?, ? ) ; INSERT INTO ACCOUNT_GROUP_REF VALUES( ?, ? )
2312 [thread-pool-98] DEBUG sql.PreparedStatement - {pstm-100039} Parameters: [1, 1, 1, 2]
2312 [thread-pool-98] DEBUG sql.PreparedStatement - {pstm-100039} Types: [java.lang.Integer, java.lang.Integer, java.lang.Integer, java.lang.Integer]
2312 [thread-pool-98] DEBUG jdbc.SimpleDataSource - Returned connection 19318506 to pool.
com.ibatis.common.jdbc.exception.NestedSQLException:
--- The error occurred while applying a parameter map.
--- Check the insertAccountGroupsByAccount-InlineParameterMap.
--- Check the statement (update failed).
--- Cause: java.sql.SQLException: You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '; INSERT INTO ACCOUNT_GROUP_REF VALUES(
Caused by: java.sql.SQLException: You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '; INSERT INTO ACCOUNT_GROUP_REF VALUES(
at com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.executeUpdate(GeneralStatement.java:86)
at com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.insert(SqlMapExecutorDelegate.java:446)
at com.ibatis.sqlmap.engine.impl.SqlMapSessionImpl.insert(SqlMapSessionImpl.java:87)
at com.ibatis.sqlmap.engine.impl.SqlMapClientImpl.insert(SqlMapClientImpl.java:56)



>Hi, > > > > >I have 2 classes: > >Account > private int id; > private String username; > private String password; > private Collection groups; > >Group > private int id; > private String name; > >the db has 3 tables; > >ACCOUNT >GROUP >ACCOUNT_GROUP_REF > >where ACCOUNT_GROUP_REF is a join table for my relations, >with 2 collumns: >ACCOUNT_ID >GROUP_ID > >Now my question is how do i keep my ACCOUNT_GROUP_REF updated, > > >the Developer guide describes how to setup selects only, >but what about insert and updates, of the relations ?? > > >Regards, >David Nielsen

Reply via email to