ibatis-user-java mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Corné A" <tri...@gmail.com>
Subject Re: Strange problems and wrong data on Linux (redhat) not on Windows
Date Tue, 25 Nov 2008 08:28:13 GMT
For what its worth;
I also tested it against the ibatis-2.3.4.726.jar build and all problems
occur the same.


2008/11/24 Corné A <tricae@gmail.com>

> Hi all,
> I am a happy ibatis user for years and now I have encountered a strange
> thing.
>
> I have Ibatis build with jdk 1.5.0_16 on my Windows XP.
> When updating with any of the 4 abator generated stubs on either jdk 1.5 or
> 1.6 I encounter *no* problems on a windows XP box.
> When I deploy everthing to a Linux box I get the weirdest errors from the
> Driver.
>
> abatorgenerated_updateByExampleSelective & abatorgenerated_updateByExample
> both give;
> com.ibatis.common.jdbc.exception.NestedSQLException:
> --- The error occurred while applying a parameter map.
> --- Check the
> vdprre.abatorgenerated_updateByExampleSelective-InlineParameterMap.
> --- Check the statement (update failed).
> --- Cause: java.sql.SQLException: [unixODBC][INTERCHAIN][UNIMS-ODBC]
> [UNIMS]
> Invoeren of wijzigen:  Duplikaat in index!
> *insert or update : duplicate in index *
> updateByPrimaryKeySelective & updateByPrimaryKey inputs the wrong data;
> {conn-100231} Preparing Statement:           update vdprre
> set                vdperc = ?              ,         vdmuwe =
> ?                 where relnr = ?       and artgrf = ?       and vdweek =
> ?       and vdsort = ?
> {pstm-100232} Executing Statement:           update vdprre
> set                vdperc = ?              ,         vdmuwe =
> ?                 where relnr = ?       and artgrf = ?       and vdweek =
> ?       and vdsort = ?
> {pstm-100232} Parameters: [11, 200847, 131505, 310, 200852, PGE55]
> {pstm-100232} Types: [java.lang.Short, java.lang.Integer,
> java.lang.Integer, java.lang.Short, java.lang.Integer, java.lang.String]
> Returned connection 15529415 to pool.
>
> While I try to update vdperc = 12 ,vdmuwe = *20*0844 the data becomes;
>
> relnr     artgrf vdweek vdsort   vdperc vdmuwe
> 131505 310   200852 PGE55 *null*    *20*
> 131505 310   200852 PGE65 *null*    *20*
> Note: there is some difference in the XP logging (spacing)?
> {conn-100021} Preparing Statement:           update vdprre set
> vdperc=?,vdmuwe=?     where relnr = ?  and artgrf = ?  and vdweek = ? and
> vdsort = ?
> {pstm-100022} Executing Statement:           update vdprre set
> vdperc=?,vdmuwe=?    where relnr = ?  and artgrf = ?  and vdweek = ? and
> vdsort = ?
> {pstm-100022} Parameters: [11, 200847, 131505, 310, 200852, PGE55]
> {pstm-100022} Types: [java.lang.Short, java.lang.Integer,
> java.lang.Integer, java.lang.Short, java.lang.Integer, java.lang.String]
>
> <update id="abatorgenerated_updateByPrimaryKeySelective"
> parameterClass="nl.pfm.vdn.ds.vdn.model.AanvoerVerwachtingRegel">
>     update vdprre
>     <dynamic prepend="set">
>       <isNotNull prepend="," property="percentage">
>         vdperc = #percentage:NUMERIC#
>       </isNotNull>
>       <isNotNull prepend="," property="mutatieWeek">
>         vdmuwe = #mutatieWeek:NUMERIC#
>       </isNotNull>
>     </dynamic>
>     where relnr = #relatieNummer:NUMERIC#
>       and artgrf = #groepFinancieel:NUMERIC#
>       and vdweek = #weekNummer:NUMERIC#
>       and vdsort = #sortering:VARCHAR#
> </update>
>
> Where as hardcoded values will be updated correctly
>
> <update id="abatorgenerated_updateByPrimaryKeySelective"
> parameterClass="nl.pfm.vdn.ds.vdn.model.AanvoerVerwachtingRegel">
> update vdprre
> set vdperc = 12 ,vdmuwe = 200844
> here relnr = #relatieNummer:NUMERIC#
> and artgrf = #groepFinancieel:NUMERIC#
> and vdweek = #weekNummer:NUMERIC#
> and vdsort = #sortering:VARCHAR#
> </update>
>
> Swapping the set columns doesn't change this behaviour set vdmuwe = 200844,
> vdperc = 12.
> Could this have something to do with a xmlparser ?
> Can anyone help me putting me on the right track or give me ways to get
> closer to the solution.
> Because i am desperately stuck at the moment.
>
> I even found more erroneus data (null & chopped) but kept it for brevity.
>
> Thanks and if someone needs more input just let me know,
>
> Corne
>
> *Below my testing code;
> *   Integer telerNummer = new Integer(131505);
>    Short productNummer = new Short("310");
>    Integer weekNummer = new Integer(200852);
>    String sorteringNaam = "PGE55";
>    Integer mutatieDatum = new Integer(200847);
>    Short percentage = new Short("11");
>
>    Connection conn = java.sql.DriverManager.*getConnection*(driverURL,
> user, password);
>    PreparedStatement ps = conn.prepareStatement(sql);
>    ps.setShort(1, percentage);
>    ps.setInt( 2, mutatieDatum);
>    ps.setInt(3, telerNummer);
>    ps.setShort(4, productNummer);
>    ps.setInt(5, weekNummer);
>    ps.setString(6, sorteringNaam);
>    int retval = ps.executeUpdate();
>    System.out.println("UPDATED RECORDS:" + retval);
>
>    AanvoerVerwachtingRegel record = new AanvoerVerwachtingRegel();
>    record.setRelatieNummer(telerNummer);
>    record.setWeekNummer(weekNummer);
>    record.setGroepFinancieel(productNummer);
>    record.setSortering(sorteringNaam);
>    record.setMutatieWeek(mutatieDatum);
>    record.setPercentage(percentage);
>
>    SqlMapClient vdn_SqlMapClient = VDN_SqlMapClient.getSqlMapInstance();
>    AanvoerVerwachtingRegelDAO aanvoerVerwachtingRegelDAO = new
> AanvoerVerwachtingRegelDAOImpl(vdn_SqlMapClient);
>    try {
>     int result1 =
> aanvoerVerwachtingRegelDAO.updateByPrimaryKeySelective(record);
>     System.out.println("UPDATED RECORDS updateByPrimaryKeySelective:" +
> result1);
>    } catch (Exception e) {
>     e.printStackTrace();
>    }
>
> try {
>     record.setSortering("PGE65");
>     int result2 = aanvoerVerwachtingRegelDAO.updateByPrimaryKey(record);
>     System.out.println("UPDATED RECORDS updateByPrimaryKey:" + result2);
>    } catch (Exception e) {
>     e.printStackTrace();
>    }
>    AanvoerVerwachtingRegelExample example = new
> AanvoerVerwachtingRegelExample();
>    AanvoerVerwachtingRegelExample.Criteria criteria =
> example.createCriteria();
>    criteria = criteria.andRelatieNummerEqualTo(telerNummer);
>    criteria = criteria.andGroepFinancieelEqualTo(productNummer);
>    criteria = criteria.andWeekNummerEqualTo(weekNummer);
>    criteria = criteria.andSorteringEqualTo(sorteringNaam);
>
>    try {
>     int result3 = aanvoerVerwachtingRegelDAO.updateByExample(record,
> example);
>     System.out.println("UPDATED RECORDS updateByExample:" + result3);
>    } catch (Exception e) {
>     e.printStackTrace();
>    }
>
>    try {
>     int result4 =
> aanvoerVerwachtingRegelDAO.updateByExampleSelective(record, example);
>     System.out.println("UPDATED RECORDS updateByExampleSelective:" +
> result4);
>    } catch (Exception e) {
>     e.printStackTrace();
>    }
>

Mime
View raw message