Re: Null values in query parameters

From: Evgeny Ryabitskiy (evgeny.ryabitski..mail.com)
Date: Wed Sep 23 2009 - 06:45:41 EDT

  • Next message: Evgeny Ryabitskiy: "Re: Null values in query parameters"

    No! #bindEqual can't help me...
    I am using something like this:

    INSERT INTO TABLE1 (id, NullableColumn) values (10, $MyNullValue)

    And in param MyNullValue I put null, It's legal to insert null in this column.
    So I can't use #bindEqual here, the only solution to pass
    (String)"null" as parametr... but I don't wan't to put everywhere in
    my code such constructions:
    (paramValue == null) ? "null" : paramValue

    It is possible to do this check on perform query level.... Going to
    make some changes to cayenne againg....

    Best regards,
    Evgeny Ryabitskiy.

    2009/9/23 Eugene R. <apparition07..mail.com>:
    > No! #bindEqual can't help me...
    > I am using something like this:
    >
    > INSERT INTO TABLE1 (id, NullableColumn) values (10, $MyNullValue)
    >
    > And in param MyNullValue I put null, It's legal to insert null in this column.
    > So I can't use #bindEqual here, the only solution to pass
    > (String)"null" as parametr... but I don't wan't to put everywhere in
    > my code such constructions:
    > (paramValue == null) ? "null" : paramValue
    >
    > It is possible to do this check on perform query level.... Going to
    > make some changes to cayenne againg....
    >
    > Best regards,
    > Evgeny Ryabitskiy.
    >
    >
    > 2009/9/23 Andrus Adamchik <andru..bjectstyle.org>:
    >> Hi Evgeny,
    >>
    >> To address NULL's syntax issues, there are special directives "#bindEqual
    >> and #bindNotEqual". See "Null Values in Bindings - #bindEqual and
    >> #bindNotEqual Directives" here:
    >>
    >> http://cayenne.apache.org/doc/scripting-sqltemplate.html
    >>
    >> I can't say I am a big fan of the above solution, and maybe we should be
    >> smarter in SQLTemplateAction about NULL's in #bind directives. Some research
    >> is needed here.
    >>
    >> Andrus
    >>
    >>
    >>
    >> On Sep 23, 2009, at 12:55 PM, Evgeny Ryabitskiy wrote:
    >>
    >>> Hello to everyone!
    >>>
    >>> I have a problem with passing null params to SQLTemplate.
    >>>
    >>> So.. I put null to params, then perform query and got... bad formed
    >>> SQL query...
    >>> I know it's because of how Velocity Engine do merge for templates.
    >>> I know that I can use construction like this: #bind('valueKey' 'jdbcType'
    >>> null)
    >>> But this query is generated and I don't know jdbcType :/
    >>>
    >>> Also I don't want to pass (java.lang.String) "null" in parameters or
    >>> my Java code will be huge.
    >>>
    >>> Looks like there is no simple way to force cayenne inserting null in
    >>> templates. Or I am missing something?
    >>>
    >>> Maybe we can add some flag for query SQLTemplate constructor.. like
    >>> boolean "convertNulls" to allow passing nulls in params without huge
    >>> template changes
    >>> ( I mean inserting everywhere #bind('valueKey' 'jdbcType' null) ) ?
    >>>
    >>>
    >>> Best regards,
    >>> Evgeny Ryabitskiy.
    >>>
    >>
    >>
    >



    This archive was generated by hypermail 2.0.0 : Wed Sep 23 2009 - 06:46:12 EDT