JUnit DAO queries test OK but JUnit DAO non-queries are a mystery?

View: New views
5 Messages — Rating Filter:   Alert me  

Parent Message unknown JUnit DAO queries test OK but JUnit DAO non-queries are a mystery?

by David Brown-48 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hello iBatis dev, gurus, users and mortals, I have a very curious situation with 6 testcase methods: 4 queries and 2 non-query. The 4 queries are some form of select against a where clause and an Integer ID and the same as: select count(*) where ... The asserts for all the queries pass. On the other hand the non-queries: 1 insert and 1 update don't fail either but inspection of the database records show no change. Any ideas on how to diagnose please advise, David.

---------------------------------------------------------------------
To unsubscribe, e-mail: user-java-unsubscribe@...
For additional commands, e-mail: user-java-help@...


Re: JUnit DAO queries test OK but JUnit DAO non-queries are a mystery?

by Larry Meadors :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Transactions? That's my guess.

Larry


On Sun, Jul 5, 2009 at 7:51 PM, David
Brown<dbrown@...> wrote:
> Hello iBatis dev, gurus, users and mortals, I have a very curious situation with 6 testcase methods: 4 queries and 2 non-query. The 4 queries are some form of select against a where clause and an Integer ID and the same as: select count(*) where ... The asserts for all the queries pass. On the other hand the non-queries: 1 insert and 1 update don't fail either but inspection of the database records show no change. Any ideas on how to diagnose please advise, David.
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-java-unsubscribe@...
> For additional commands, e-mail: user-java-help@...
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: user-java-unsubscribe@...
For additional commands, e-mail: user-java-help@...


Parent Message unknown Re: JUnit DAO queries test OK but JUnit DAO non-queries are a mystery?

by David Brown-48 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hello Larry, thanks for the speedy reply. I am not a long time iBatis user and therefore lack considerable background. Notwithstanding, I am not sure of your reply: Transactions? On the software side I have the non-query testcases annotated: @Transactional. On the database side I am using the MySql transactional engine: innodb. I have studied the output of the MySql command: show innodb status but nothing under transactions or the queries categories shows anything of interest. Please try to be more specific for the uninitiated.

Regards, David.



----- Original Message -----
From: "Larry Meadors" <larry.meadors@...>
To: user-java@...
Sent: Sunday, July 5, 2009 10:49:15 PM GMT -06:00 US/Canada Central
Subject: Re: JUnit DAO queries test OK but JUnit DAO non-queries are a  mystery?

Transactions? That's my guess.

Larry


On Sun, Jul 5, 2009 at 7:51 PM, David
Brown<dbrown@...> wrote:
> Hello iBatis dev, gurus, users and mortals, I have a very curious situation with 6 testcase methods: 4 queries and 2 non-query. The 4 queries are some form of select against a where clause and an Integer ID and the same as: select count(*) where ... The asserts for all the queries pass. On the other hand the non-queries: 1 insert and 1 update don't fail either but inspection of the database records show no change. Any ideas on how to diagnose please advise, David.
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-java-unsubscribe@...
> For additional commands, e-mail: user-java-help@...
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: user-java-unsubscribe@...
For additional commands, e-mail: user-java-help@...


---------------------------------------------------------------------
To unsubscribe, e-mail: user-java-unsubscribe@...
For additional commands, e-mail: user-java-help@...


Re: JUnit DAO queries test OK but JUnit DAO non-queries are a mystery?

by Steven A-2 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

David,

Rather than have us guess at your problem, be a little more helpful and post some code, as well as your configuration.

Try setting jdbc autocommit to true.  That should clear up your problem....



On Mon, Jul 6, 2009 at 7:21 AM, David Brown <dbrown@...> wrote:
Hello Larry, thanks for the speedy reply. I am not a long time iBatis user and therefore lack considerable background. Notwithstanding, I am not sure of your reply: Transactions? On the software side I have the non-query testcases annotated: @Transactional. On the database side I am using the MySql transactional engine: innodb. I have studied the output of the MySql command: show innodb status but nothing under transactions or the queries categories shows anything of interest. Please try to be more specific for the uninitiated.

Regards, David.



----- Original Message -----
From: "Larry Meadors" <larry.meadors@...>
To: user-java@...
Sent: Sunday, July 5, 2009 10:49:15 PM GMT -06:00 US/Canada Central
Subject: Re: JUnit DAO queries test OK but JUnit DAO non-queries are a  mystery?

Transactions? That's my guess.

Larry


On Sun, Jul 5, 2009 at 7:51 PM, David
Brown<dbrown@...> wrote:
> Hello iBatis dev, gurus, users and mortals, I have a very curious situation with 6 testcase methods: 4 queries and 2 non-query. The 4 queries are some form of select against a where clause and an Integer ID and the same as: select count(*) where ... The asserts for all the queries pass. On the other hand the non-queries: 1 insert and 1 update don't fail either but inspection of the database records show no change. Any ideas on how to diagnose please advise, David.
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-java-unsubscribe@...
> For additional commands, e-mail: user-java-help@...
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: user-java-unsubscribe@...
For additional commands, e-mail: user-java-help@...


---------------------------------------------------------------------
To unsubscribe, e-mail: user-java-unsubscribe@...
For additional commands, e-mail: user-java-help@...



Parent Message unknown Re: JUnit DAO queries test OK but JUnit DAO non-queries are a mystery?

by David Brown-48 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hello Steven, thanks for the reply. I am running MySql. At the mysql prompt a: select @@autocommit displays a 1. And, the show variables displays: autocommit as ON. In my applicationContext.xml the bean property: defaultAutocommit = true. The various gory xml configs and source code follows. Only the transactions do not work. All query testcases pass. Thanks and please advise, David.



*********************************************************************************
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context"
       xmlns:tx="http://www.springframework.org/schema/tx"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
            http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd
            http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
            http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">

    <!-- Configurer that replaces ${...} placeholders with values from a properties file -->
    <context:property-placeholder location="classpath:jdbc.properties"/>
   
    <!-- Enable @Transactional support -->
    <tx:annotation-driven/>

    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
        <property name="driverClassName" value="${driverClass}"/>
        <property name="url" value="${databaseURL}"/>
        <property name="username" value="${username}"/>
        <property name="password" value="${password}"/>
        <property name="maxActive" value="30"/>
        <property name="maxIdle" value="10"/>
        <property name="maxWait" value="1000"/>
        <property name="defaultAutoCommit" value="true"/>
    </bean>

    <!-- Transaction manager for iBATIS DAOs -->
    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource"/>
    </bean>

    <!-- SqlMap setup for iBATIS Database Layer -->
    <bean id="sqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
        <property name="dataSource" ref="dataSource"/>
        <property name="configLocation" value="classpath:sqlMap-config.xml"/>
    </bean>

        <bean class="com.sexingtechnologies.st.dao.BullmasterDaoIbatis" >
                <property name="sqlMapClient" ref="sqlMapClient"/>
        </bean>

        <bean class="com.sexingtechnologies.st.dao.AnimalmasterDaoIbatis" >
                <property name="sqlMapClient" ref="sqlMapClient"/>
        </bean>

</beans>
*********************************************************************************


*********************************************************************************
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE sqlMap PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN" "http://ibatis.apache.org/dtd/sql-map-2.dtd" >
<sqlMap namespace="animalmaster" >
  <typeAlias alias="animalmaster" type="com.sexingtechnologies.st.data.Animalmaster" />
  <resultMap id="animalmaster_ResultMap" class="animalmaster" >
    <result column="_class" property="_class" jdbcType="CHAR" />
    <result column="animalId" property="animalId" jdbcType="LONG" />
    <result column="AnimalBreedId" property="animalBreedId" jdbcType="LONG" />
  </resultMap>

  <sql id="animalid_Where_Clause" >
  where animalid = #animalId:LONG#
  </sql>

  <sql id="class_value_Where_Clause" >
  where _class = #_class:CHAR#
  </sql>
 
  <sql id="AnimalBreedId_value_Where_Clause" >
  where AnimalBreedId = #AnimalBreedId:LONG#
  </sql>

  <select id="selectAll" resultMap="animalmaster_ResultMap" parameterClass="animalmaster" >
    <!--
      Select all records
    -->
    select _class, animalId, AnimalBreedId
    from animalmaster
  </select>

  <select id="selectByPrimaryKey" resultMap="animalmaster_ResultMap" parameterClass="java.lang.Long" >
    <!--
      Select by primary key
    -->
    select _class, animalId, AnimalBreedId
    from animalmaster
    <isParameterPresent >
      <include refid="animalmaster.animalid_Where_Clause" />
    </isParameterPresent>
  </select>
 
  <select id="selectByPrimaryKeyAndClass" resultMap="animalmaster_ResultMap" parameterClass="java.lang.Long" >
    <!--
      Select by primary key
    -->
    select _class, animalId, AnimalBreedId
    from animalmaster
    where _class = #_class:CHAR#
      and animalId = #animalId:LONG#
  </select>

  <delete id="deleteByPrimaryKey" parameterClass="java.lang.Long" >
    <!--
      Delete by primary key
    -->
    delete from animalmaster
    where _class = #_class:CHAR#
      and animalId = #animalId:LONG#
  </delete>
 
  <delete id="deleteByAnimalBreedId" parameterClass="animalmaster" >
    <!--
      Delete by AnimalBreedId where clause
    -->
    delete from animalmaster
    <include refid="animalmaster.AnimalBreedId_value_Where_Clause" />
  </delete>
 
  <insert id="insert" parameterClass="animalmaster" >
    <!--
      Insert using values
    -->
    insert into animalmaster (_class, animalId, AnimalBreedId)
    values (#_class:CHAR#, #animalId:LONG#, #animalBreedId:LONG#)
  </insert>
 
  <insert id="insertSelective" parameterClass="animalmaster" >
    <!--
      Selective insert
    -->
    insert into animalmaster
    <dynamic prepend="(" >
      <isNotNull prepend="," property="_class" >
        _class
      </isNotNull>
      <isNotNull prepend="," property="animalId" >
        animalId
      </isNotNull>
      <isNotNull prepend="," property="animalBreedId" >
        AnimalBreedId
      </isNotNull>
      )
    </dynamic>
    values
    <dynamic prepend="(" >
      <isNotNull prepend="," property="_class" >
        #_class:CHAR#
      </isNotNull>
      <isNotNull prepend="," property="animalId" >
        #animalId:LONG#
      </isNotNull>
      <isNotNull prepend="," property="animalBreedId" >
        #animalBreedId:LONG#
      </isNotNull>
      )
    </dynamic>
  </insert>

  <select id="countByAnimalBreedId" resultClass="java.lang.Integer" >
    <!--
      Count all records against AnimalBreedId where clause
    -->
    select count(*) from animalmaster
    <include refid="animalmaster.AnimalBreedId_value_Where_Clause" />
  </select>
 
  <select id="countAllRecs" resultClass="java.lang.Integer">
  <!--
                        Count all records
                -->
                select count(*) from animalmaster
  </select>

  <update id="updateByAnimalId" >
    <!--
      Update by animal ID
    -->
    update animalmaster
    <dynamic prepend="set" >
      <isNotNull prepend="," property="record._class" >
        _class = #record._class:CHAR#
      </isNotNull>
      <isNotNull prepend="," property="record.animalId" >
        animalId = #record.animalId:LONG#
      </isNotNull>
      <isNotNull prepend="," property="record.animalBreedId" >
        AnimalBreedId = #record.animalBreedId:LONG#
      </isNotNull>
    </dynamic>
    <isParameterPresent >
      <include refid="animalmaster.animalid_Where_Clause" />
    </isParameterPresent>
  </update>

  <update id="updateByClass" >
    <!--
      Update by _class value
    -->
    update animalmaster
    set _class = #record._class:CHAR#,
      animalId = #record.animalId:LONG#,
      AnimalBreedId = #record.animalBreedId:LONG#
    <isParameterPresent >
      <include refid="animalmaster.class_value_Where_Clause" />
    </isParameterPresent>
  </update>

  <update id="updateByPrimaryKey" parameterClass="animalmaster" >
    <!--
      Update by primary key (same as animal ID above maybe needs to changed.)
    -->
    update animalmaster
    <dynamic prepend="set" >
      <isNotNull prepend="," property="animalBreedId" >
        AnimalBreedId = #animalBreedId:LONG#
      </isNotNull>
    </dynamic>
    where _class = #_class:CHAR#
      and animalId = #animalId:LONG#
  </update>

  <update id="updateByPrimaryKeyAndClassValue" parameterClass="animalmaster" >
    <!--
      Update by animal ID primary key and _class value where clause
    -->
    update animalmaster
    set AnimalBreedId = #animalBreedId:LONG#
    where _class = #_class:CHAR#
      and animalId = #animalId:LONG#
  </update>
</sqlMap>
*********************************************************************************


*********************************************************************************
Two transactions that do nothing
*********************************************************************************
        @Rollback @Transactional @Test
        public void testInsertAnimals() {
                animalMaster = new Animalmaster();
                animalMaster.setAnimalBreedId((long)104);
                animalMaster.setAnimalId((long)0);
                animalMaster.set_class("mammalia");
                animalmasterDao.insert(animalMaster);
        }

        @Rollback @Transactional @Test
        public void testUpdateAnimals() {

                animalMaster = new Animalmaster();
                animalMaster.setAnimalId((long)2881);
                animalMaster.set_class("mammalia");
                animalMaster.setAnimalBreedId((long)89);

                animalmasterDao.update(animalMaster);

                animalMaster = animalmasterDao.selectByPrimaryKey((long)2881);

                assertNotNull(animalMaster);

                assertEquals((long)2881, (long)animalMaster.getAnimalId());
                assertEquals("mammalia", animalMaster.get_class());
                assertEquals((long)89, (long)animalMaster.getAnimalBreedId());
        }
*********************************************************************************




----- Original Message -----
From: "Steven A" <traderj133t@...>
To: user-java@...
Cc: "larry meadors" <larry.meadors@...>
Sent: Monday, July 6, 2009 10:44:25 AM GMT -06:00 US/Canada Central
Subject: Re: JUnit DAO queries test OK but JUnit DAO non-queries are a  mystery?

David,

Rather than have us guess at your problem, be a little more helpful and post
some code, as well as your configuration.

Try setting jdbc autocommit to true.  That should clear up your problem....



On Mon, Jul 6, 2009 at 7:21 AM, David Brown
<dbrown@...>wrote:

> Hello Larry, thanks for the speedy reply. I am not a long time iBatis user
> and therefore lack considerable background. Notwithstanding, I am not sure
> of your reply: Transactions? On the software side I have the non-query
> testcases annotated: @Transactional. On the database side I am using the
> MySql transactional engine: innodb. I have studied the output of the MySql
> command: show innodb status but nothing under transactions or the queries
> categories shows anything of interest. Please try to be more specific for
> the uninitiated.
>
> Regards, David.
>
>
>
> ----- Original Message -----
> From: "Larry Meadors" <larry.meadors@...>
> To: user-java@...
> Sent: Sunday, July 5, 2009 10:49:15 PM GMT -06:00 US/Canada Central
> Subject: Re: JUnit DAO queries test OK but JUnit DAO non-queries are a
>  mystery?
>
> Transactions? That's my guess.
>
> Larry
>
>
> On Sun, Jul 5, 2009 at 7:51 PM, David
> Brown<dbrown@...> wrote:
> > Hello iBatis dev, gurus, users and mortals, I have a very curious
> situation with 6 testcase methods: 4 queries and 2 non-query. The 4 queries
> are some form of select against a where clause and an Integer ID and the
> same as: select count(*) where ... The asserts for all the queries pass. On
> the other hand the non-queries: 1 insert and 1 update don't fail either but
> inspection of the database records show no change. Any ideas on how to
> diagnose please advise, David.
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: user-java-unsubscribe@...
> > For additional commands, e-mail: user-java-help@...
> >
> >
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-java-unsubscribe@...
> For additional commands, e-mail: user-java-help@...
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-java-unsubscribe@...
> For additional commands, e-mail: user-java-help@...
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: user-java-unsubscribe@...
For additional commands, e-mail: user-java-help@...