Java Mailing List Archive

Home » the NHibernate development list »

Re: [NHibernate-development] NH-1098

Wolfgang Trog (CodeRunners AG)


Replies: Find Java Web Hosting

Author LoginPost Reply

After writing some more test cases I figured out, that my fix does not work under all circumstances. The main problem seems to be that there are some assumption about the order of the parameter types (filter, named, positional) which are not correct if a subquery is used. My fix would solve the problem for criteria and queries without named parameters, but would still fail if one or more named parameters are used.


After some more analysis, I found out, that even a simple query won’t work, if you mix named and positional parameters:


IQuery query = session.CreateQuery( “from A as a where a.ValueA > :ValA and a.ValueA < ?" );

            query.SetParameter( "ValA", 5 );

            query.SetInt32( 0, 7 );


NHibernate: select … where (a0_.val_a>@p0 )and(a0_.val_a<@p1 ); @p0 = '7', @p1 = '5'


@p0 and @p1 contain the wrong values. Sure, it not really reasonable to mix positional and named parameters in a query, but on the other hand I can’t remember any constraint on that.


I tested all this on 1.2.1-GA, but I also had a quick look at the trunk and there seem to be no difference in handling the parameters.







From: [] On Behalf Of Ayende Rahien
Sent: Montag, 18. Februar 2008 07:16
To: the NHibernate development list
Subject: Re: [NHibernate-development] NH-1098


Can you submit a patch + test case for this?

On 2/6/08, Wolli <> wrote:

Hi All,


I ran into a problem with subqueries and filters, where the order of the parameters (positional and filter parameters, not named parameters) got messed up. I searched through the forum and JIRA and found to similar issues:


1)      NH-1098 (I'm not sure, if it's exactly the same problem, but pretty much sounds like it)



After some debugging I think I found the problem in method ProcessFilters in  QueryParameters (line 369 ff.). There, the SQL parts of the statement are analyzed and the parameters are added to the SQL string. During the loop the parameters (positional and filter) are added in the order they occur in the parts list, but only the filter parameters are added to the parameter list. After processing the parts, the positional parameters are added at the end of the parameter list, which may result in a wrong order.


I worked out a fix for the problem, but I'm not sure, if it does not cause other problems and would appreciate it if somebody could have a look on it. I can provide the fix and a test case. Should I open a new JIRA issue or should I upload the information to NH-1098 ?


Best Regards,






This email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
Nhibernate-development mailing list


This email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
Nhibernate-development mailing list
©2008 - Jax Systems, LLC, U.S.A.