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.


Reply via email to