db-torque-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Thomas Fischer (JIRA)" <j...@apache.org>
Subject [jira] Resolved: (TORQUE-59) correctBooleans() overwrites complex boolean criteria
Date Sun, 29 Oct 2006 12:09:18 GMT
     [ http://issues.apache.org/jira/browse/TORQUE-59?page=all ]

Thomas Fischer resolved TORQUE-59.
----------------------------------

    Fix Version/s: 3.2.1
       Resolution: Fixed
         Assignee: Thomas Fischer

> correctBooleans() overwrites complex boolean criteria
> -----------------------------------------------------
>
>                 Key: TORQUE-59
>                 URL: http://issues.apache.org/jira/browse/TORQUE-59
>             Project: Torque
>          Issue Type: Bug
>          Components: Runtime
>    Affects Versions: 3.2
>         Environment: MySQL 5
>            Reporter: Thoralf Rickert
>         Assigned To: Thomas Fischer
>             Fix For: 3.2.1
>
>
> If you have a table with a nullable boolean column:
>   <column name="test" type="booleanint" size="1"/>
> and create a criteria like this:
>     Criterion c1 = criteria.getNewCriterion(TEST, false, Criteria.EQUAL);
>     Criterion c2 = criteria.getNewCriterion(TEST, null, Criteria.ISNULL);
>     criteria.add(c1.or(c2));
> then the createQueryString returns the correct toString() result with
>    ...WHERE (TEST = 0 or TEST IS NULL) ...
> but when you call doSelect(), it sends just TEST = 0 to the database.
> The problem is in the generated correctBooleans(Criteria) method. It checks if the Criteria
contains one of the boolean column and replaces the criterion with an int value. So, in the
above situation it removes the Criteria.ISNULL part...that is not expected.
>        .....
>        if (criteria.containsKey(TEST))
>         {
>             Object possibleBoolean = criteria.get(TEST);
>             if (possibleBoolean instanceof Boolean)
>             {
>                 criteria.add(TEST, ((Boolean) possibleBoolean).booleanValue() ? 1 : 0);
>             }
>          }
> The only possible workaround is to use the integer value (0,1) in the criterion (Criterion
c1 = criteria.getNewCriterion(TEST, 0, Criteria.EQUAL) ). But this is not expected, because
it is database specific.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

---------------------------------------------------------------------
To unsubscribe, e-mail: torque-dev-unsubscribe@db.apache.org
For additional commands, e-mail: torque-dev-help@db.apache.org


Mime
View raw message