[hibernate-issues] [Hibernate-JIRA] Created: (HHH-3796) Non-ANSI92 compliant SQL is generated when binding null values

Tom van den Berge (JIRA) noreply at atlassian.com
Wed Mar 4 04:47:38 EST 2009


Non-ANSI92 compliant SQL is generated when binding null values
--------------------------------------------------------------

                 Key: HHH-3796
                 URL: http://opensource.atlassian.com/projects/hibernate/browse/HHH-3796
             Project: Hibernate Core
          Issue Type: Bug
    Affects Versions: 3.2.6
         Environment: HSQLDB
            Reporter: Tom van den Berge


When binding a parameter with a null value to a query (using the JPA interface), Hibernate generates SQL that is not ANSI-92 SQL compliant. The JPAQL

Query q = ..."from entity where column = :possibleNullValue";
q.setParameter("possibleNullValue", null);

results in the following SQL:

"select ... from entity where column = null".

According to the ANSI-92 SQL standard, comparing with null values must always be done with the "is" operator. Using the equals (=) operator always evaulates to FALSE, and will therefore not produce any results.

Many databases relax this requirement and treat the equals operator similar to the "is" operator when comparing null values. However,  HSQLDB does not (it enforces strict ANSI-92 compliance), which means that this kind of queries does not produce any results on this database. There are probably other database that do this, too.

Strangly enough, when the parameter is not bound to the query, but inserted in the JPAQL, Hibernate generates correct SQL:

"from entity where column = null"

is converted to SQL:

"select ... from entity where column is null".

So a workaround is to provide two different queries: one for non-null values (using parameter binding), and one for null values (using "null" in the JPAQL). Rather silly, but it works.


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

        



More information about the hibernate-issues mailing list