You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user-java@ibatis.apache.org by Juri Vrljicak <ju...@gmail.com> on 2006/02/07 22:14:34 UTC

Problem with bit/boolean DataType

Hi there, please help on this. I am new to the list.
I am not able to make iBatis work on the following.
Ive got a domain bean with a property of type boolean which i am trying to
map to a column of type bit on postgres.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sqlMap PUBLIC "-//iBATIS.com//DTD SQL Map 2.0//EN" "
http://www.ibatis.com/dtd/sql-map-2.dtd">

<sqlMap namespace="Temporada">

<resultMap id="temporadaResult" class="ar.com.fys.almacen.domain.Temporada">
        <result property="temporadaId" column="ID"/>
    <result property="description" column="DESCRIPTION"/>
        <result property="activo" column="ACTIVE" />
</resultMap>

<resultMap id="idResult" class="ar.com.fys.almacen.domain.Temporada">
        <result property="temporadaId" column="ID"/>
</resultMap>

<parameterMap id="parameterMap" class="ar.com.fys.almacen.domain.Temporada">
  <parameter property="temporadaId" jdbcType="INT" javaType="int"/>
  <parameter property="description" jdbcType="VARCHAR" javaType="
java.lang.String"/>
  <parameter property="activo" jdbcType="BIT" javaType="boolean"
nullValue="0"/>
</parameterMap>

<select id="getAll.ar.com.fys.almacen.domain.Temporada.Results"
resultMap="temporadaResult">
    SELECT * FROM temporadas
</select>

<delete id="delete.ar.com.fys.almacen.domain.Temporada.Results"
parameterClass="ar.com.fys.almacen.domain.Temporada">
    delete from temporadas where id = #temporadaId#
</delete>

<insert id="insert.ar.com.fys.almacen.domain.Temporada.Results"
parameterClass="ar.com.fys.almacen.domain.Temporada">
        insert into Temporadas (id, description, active) values
(#temporadaId#,#description#,#activo:BIT#)
</insert>

<update id="update.ar.com.fys.almacen.domain.Temporada.Results"
parameterMap="parameterMap">
  update temporadas set description=#description#, active=#activo# where
id=#temporadaId#
</update>

<select id="getLastId.ar.com.fys.almacen.domain.Temporada.Results"
resultMap="idResult">
    SELECT max(id) as id from temporadas
</select>


</sqlMap>


I am aware of the type handlers but never used nor seen one before.
Here is the stack trace and my problem

org.springframework.jdbc.BadSqlGrammarException: SqlMapClient operation; bad
SQL grammar []; nested exception is
com.ibatis.common.jdbc.exception.NestedSQLException:
--- The error occurred in ar/com/fys/almacen/dao/ibatis/maps/Temporada.xml.

--- The error occurred while applying a parameter map.
--- Check the
insert.ar.com.fys.almacen.domain.Temporada.Results-InlineParameterMap.
--- Check the statement (update failed).
--- Cause: java.sql.SQLException: ERROR: column "active" is of type bit but
expression is of type boolean
com.ibatis.common.jdbc.exception.NestedSQLException:
--- The error occurred in ar/com/fys/almacen/dao/ibatis/maps/Temporada.xml.

--- The error occurred while applying a parameter map.
--- Check the
insert.ar.com.fys.almacen.domain.Temporada.Results-InlineParameterMap.
--- Check the statement (update failed).
--- Cause: java.sql.SQLException: ERROR: column "active" is of type bit but
expression is of type boolean
Caused by: java.sql.SQLException: ERROR: column "active" is of type bit but
expression is of type boolean
    at
com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.executeUpdate(
GeneralStatement.java:91)
    at com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.insert(
SqlMapExecutorDelegate.java:442)
    at com.ibatis.sqlmap.engine.impl.SqlMapSessionImpl.insert(
SqlMapSessionImpl.java:81)
    at
org.springframework.orm.ibatis.SqlMapClientTemplate$9.doInSqlMapClient(
SqlMapClientTemplate.java:319)
    at org.springframework.orm.ibatis.SqlMapClientTemplate.execute(
SqlMapClientTemplate.java:181)
    at org.springframework.orm.ibatis.SqlMapClientTemplate.insert(
SqlMapClientTemplate.java:317)
    at
ar.com.fys.commons.dao.ormimpl.ibatis.IbatisObjectStorageManagerImpl.store(
IbatisObjectStorageManagerImpl.java:83)
    at ar.com.fys.almacen.client.ui.wizards.NewTemporadaWizard.onFinish(
NewTemporadaWizard.java:68)
    at org.springframework.richclient.wizard.AbstractWizard.performFinish(
AbstractWizard.java:275)
    at org.springframework.richclient.wizard.WizardDialog.onFinish(
WizardDialog.java:175)
    at
org.springframework.richclient.dialog.ApplicationDialog$1.doExecuteCommand(
ApplicationDialog.java:342)
    at org.springframework.richclient.command.ActionCommand.execute(
ActionCommand.java:188)
    at
org.springframework.richclient.command.ActionCommand$1.actionPerformed(
ActionCommand.java:123)
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java
:1849)
    at javax.swing.AbstractButton$Handler.actionPerformed(
AbstractButton.java:2169)
    at javax.swing.DefaultButtonModel.fireActionPerformed(
DefaultButtonModel.java:420)
    at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java
:258)
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(
BasicButtonListener.java:234)
    at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java
:231)
    at java.awt.Component.processMouseEvent(Component.java:5488)
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3126)
    at java.awt.Component.processEvent(Component.java:5253)
    at java.awt.Container.processEvent(Container.java:1966)
    at java.awt.Component.dispatchEventImpl(Component.java:3955)
    at java.awt.Container.dispatchEventImpl(Container.java:2024)
    at java.awt.Component.dispatchEvent(Component.java:3803)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java
:4212)
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3892)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3822)
    at java.awt.Container.dispatchEventImpl(Container.java:2010)
    at java.awt.Window.dispatchEventImpl(Window.java:1774)
    at java.awt.Component.dispatchEvent(Component.java:3803)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:463)
    at java.awt.EventDispatchThread.pumpOneEventForHierarchy(
EventDispatchThread.java:242)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(
EventDispatchThread.java:163)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(
EventDispatchThread.java:153)
    at java.awt.Dialog$1.run(Dialog.java:515)
    at java.awt.Dialog.show(Dialog.java:536)
    at java.awt.Component.show(Component.java:1300)
    at java.awt.Component.setVisible(Component.java:1253)
    at org.springframework.richclient.dialog.ApplicationDialog.showDialog(
ApplicationDialog.java:278)
    at ar.com.fys.almacen.client.ui.wizards.NewTemporadaWizard.execute(
NewTemporadaWizard.java:63)
    at
org.springframework.richclient.command.TargetableActionCommand.doExecuteCommand
(TargetableActionCommand.java:102)
    at org.springframework.richclient.command.ActionCommand.execute(
ActionCommand.java:188)
    at
org.springframework.richclient.command.ActionCommand$1.actionPerformed(
ActionCommand.java:123)
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java
:1849)
    at javax.swing.AbstractButton$Handler.actionPerformed(
AbstractButton.java:2169)
    at javax.swing.DefaultButtonModel.fireActionPerformed(
DefaultButtonModel.java:420)
    at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java
:258)
    at javax.swing.AbstractButton.doClick(AbstractButton.java:302)
    at javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java
:1000)
    at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(
BasicMenuItemUI.java:1041)
    at java.awt.Component.processMouseEvent(Component.java:5488)
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3126)
    at java.awt.Component.processEvent(Component.java:5253)
    at java.awt.Container.processEvent(Container.java:1966)
    at java.awt.Component.dispatchEventImpl(Component.java:3955)
    at java.awt.Container.dispatchEventImpl(Container.java:2024)
    at java.awt.Component.dispatchEvent(Component.java:3803)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java
:4212)
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3892)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3822)
    at java.awt.Container.dispatchEventImpl(Container.java:2010)
    at java.awt.Window.dispatchEventImpl(Window.java:1774)
    at java.awt.Component.dispatchEvent(Component.java:3803)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:463)
    at java.awt.EventDispatchThread.pumpOneEventForHierarchy(
EventDispatchThread.java:242)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(
EventDispatchThread.java:163)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:157)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:149)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:110)
Caused by: java.sql.SQLException: ERROR: column "active" is of type bit but
expression is of type boolean
    at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(
QueryExecutorImpl.java:1471)
    at org.postgresql.core.v3.QueryExecutorImpl.processResults(
QueryExecutorImpl.java:1256)
    at org.postgresql.core.v3.QueryExecutorImpl.execute(
QueryExecutorImpl.java:175)
    at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(
AbstractJdbc2Statement.java:389)
    at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(
AbstractJdbc2Statement.java:330)
    at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(
AbstractJdbc2Statement.java:321)
    at org.apache.commons.dbcp.DelegatingPreparedStatement.execute(
DelegatingPreparedStatement.java:168)
    at com.ibatis.sqlmap.engine.execution.SqlExecutor.executeUpdate(
SqlExecutor.java:84)
    at
com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.sqlExecuteUpdate
(GeneralStatement.java:200)
    at
com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.executeUpdate(
GeneralStatement.java:78)
    ... 70 more

Caused by:
java.sql.SQLException: ERROR: column "active" is of type bit but expression
is of type boolean
    at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(
QueryExecutorImpl.java:1471)
    at org.postgresql.core.v3.QueryExecutorImpl.processResults(
QueryExecutorImpl.java:1256)
    at org.postgresql.core.v3.QueryExecutorImpl.execute(
QueryExecutorImpl.java:175)
    at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(
AbstractJdbc2Statement.java:389)
    at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(
AbstractJdbc2Statement.java:330)
    at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(
AbstractJdbc2Statement.java:321)
    at org.apache.commons.dbcp.DelegatingPreparedStatement.execute(
DelegatingPreparedStatement.java:168)
    at com.ibatis.sqlmap.engine.execution.SqlExecutor.executeUpdate(
SqlExecutor.java:84)
    at
com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.sqlExecuteUpdate
(GeneralStatement.java:200)
    at
com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.executeUpdate(
GeneralStatement.java:78)
    at com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.insert(
SqlMapExecutorDelegate.java:442)
    at com.ibatis.sqlmap.engine.impl.SqlMapSessionImpl.insert(
SqlMapSessionImpl.java:81)
    at
org.springframework.orm.ibatis.SqlMapClientTemplate$9.doInSqlMapClient(
SqlMapClientTemplate.java:319)
    at org.springframework.orm.ibatis.SqlMapClientTemplate.execute(
SqlMapClientTemplate.java:181)
    at org.springframework.orm.ibatis.SqlMapClientTemplate.insert(
SqlMapClientTemplate.java:317)
    at
ar.com.fys.commons.dao.ormimpl.ibatis.IbatisObjectStorageManagerImpl.store(
IbatisObjectStorageManagerImpl.java:83)
    at ar.com.fys.almacen.client.ui.wizards.NewTemporadaWizard.onFinish(
NewTemporadaWizard.java:68)
    at org.springframework.richclient.wizard.AbstractWizard.performFinish(
AbstractWizard.java:275)
    at org.springframework.richclient.wizard.WizardDialog.onFinish(
WizardDialog.java:175)
    at
org.springframework.richclient.dialog.ApplicationDialog$1.doExecuteCommand(
ApplicationDialog.java:342)
    at org.springframework.richclient.command.ActionCommand.execute(
ActionCommand.java:188)
    at
org.springframework.richclient.command.ActionCommand$1.actionPerformed(
ActionCommand.java:123)
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java
:1849)
    at javax.swing.AbstractButton$Handler.actionPerformed(
AbstractButton.java:2169)
    at javax.swing.DefaultButtonModel.fireActionPerformed(
DefaultButtonModel.java:420)
    at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java
:258)
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(
BasicButtonListener.java:234)
    at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java
:231)
    at java.awt.Component.processMouseEvent(Component.java:5488)
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3126)
    at java.awt.Component.processEvent(Component.java:5253)
    at java.awt.Container.processEvent(Container.java:1966)
    at java.awt.Component.dispatchEventImpl(Component.java:3955)
    at java.awt.Container.dispatchEventImpl(Container.java:2024)
    at java.awt.Component.dispatchEvent(Component.java:3803)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java
:4212)
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3892)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3822)
    at java.awt.Container.dispatchEventImpl(Container.java:2010)
    at java.awt.Window.dispatchEventImpl(Window.java:1774)
    at java.awt.Component.dispatchEvent(Component.java:3803)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:463)
    at java.awt.EventDispatchThread.pumpOneEventForHierarchy(
EventDispatchThread.java:242)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(
EventDispatchThread.java:163)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(
EventDispatchThread.java:153)
    at java.awt.Dialog$1.run(Dialog.java:515)
    at java.awt.Dialog.show(Dialog.java:536)
    at java.awt.Component.show(Component.java:1300)
    at java.awt.Component.setVisible(Component.java:1253)
    at org.springframework.richclient.dialog.ApplicationDialog.showDialog(
ApplicationDialog.java:278)
    at ar.com.fys.almacen.client.ui.wizards.NewTemporadaWizard.execute(
NewTemporadaWizard.java:63)
    at
org.springframework.richclient.command.TargetableActionCommand.doExecuteCommand
(TargetableActionCommand.java:102)
    at org.springframework.richclient.command.ActionCommand.execute(
ActionCommand.java:188)
    at
org.springframework.richclient.command.ActionCommand$1.actionPerformed(
ActionCommand.java:123)
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java
:1849)
    at javax.swing.AbstractButton$Handler.actionPerformed(
AbstractButton.java:2169)
    at javax.swing.DefaultButtonModel.fireActionPerformed(
DefaultButtonModel.java:420)
    at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java
:258)
    at javax.swing.AbstractButton.doClick(AbstractButton.java:302)
    at javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java
:1000)
    at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(
BasicMenuItemUI.java:1041)
    at java.awt.Component.processMouseEvent(Component.java:5488)
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3126)
    at java.awt.Component.processEvent(Component.java:5253)
    at java.awt.Container.processEvent(Container.java:1966)
    at java.awt.Component.dispatchEventImpl(Component.java:3955)
    at java.awt.Container.dispatchEventImpl(Container.java:2024)
    at java.awt.Component.dispatchEvent(Component.java:3803)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java
:4212)
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3892)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3822)
    at java.awt.Container.dispatchEventImpl(Container.java:2010)
    at java.awt.Window.dispatchEventImpl(Window.java:1774)
    at java.awt.Component.dispatchEvent(Component.java:3803)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:463)
    at java.awt.EventDispatchThread.pumpOneEventForHierarchy(
EventDispatchThread.java:242)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(
EventDispatchThread.java:163)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:157)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:149)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:110)


hope this is clear enough,

best regards
juri vrljicak