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


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: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to