+1 for deprecating the HQL style positional parameters in this case.
On Feb 3, 2012, at 4:31 PM, Steve Ebersole wrote:
The "force" is really 2 fold.
First, yes there is problems when the resulting SQL query needs to be re-ordered for
various reasons. The positional parameters sometimes end up in different orders from what
they started. I *think* all those issues have been resolved now. The problem was that
the code originally just assumed the position in the HQL and the position in the SQL would
be the same in terms of order. IIRC I had to (1) separate the notions of positional
parameter order and the positions they ended up in the SQL and then (2) add tracking
between the 2 notions. So extra overhead there.
Also, its confusing imo with the JPA notion of positional parameters. If the query uses
jpa-style positional parameters, they have to be treated as named parameters in terms of
binding to the org.hibernate.Query API. Our impl of javax.persistence.Query hides that
complexity. But there is a mismatch between how those parameters are handled in the two
APIs. Just so we are all clear on what this means...
// HQL positional parameters:
Query q = session.createQuery( "from Cat c where c.name = ?" )
.setParameter( 1, "Tabitha" )
...
// JPQL style:
Query q = em.createQuery( "from Cat c where c.name = ?1" )
.setParameter( 1, "Tabitha" )
...
JPQL style, from Hibernate API:
Query q = em.createQuery( "from Cat c where c.name = ?1" )
.setParameter( "1", "Tabitha" )
...
On Fri 03 Feb 2012 07:18:49 AM CST, Hardy Ferentschik wrote:
> And just use named parameters?
>
> query.setString("name", "Fritz");
>
> I don't think have a strong opinion on that. I am fine w/ deprecating it.
> What is the driving force behind? I recall that there were some Jira issues which
> had some issues with positional parameters. Are they related?
>
> --Hardy
>
>
> On Feb 3, 2012, at 1:47 PM, Steve Ebersole wrote:
>
>> What do y'all think about deprecating positional parameters in HQL? I
>> am talking about the HQL-specific notion here, not the JPA notion of a
>> positional parameter which we obviously have to continue to support.
>>
>> HQL positional params are in the form:
>> from Cat c where c.name = ?
>>
>> w/ setParameter(1, "steve")
>>
>> --
>> steve(a)hibernate.org
>>
http://hibernate.org
>> _______________________________________________
>> hibernate-dev mailing list
>> hibernate-dev(a)lists.jboss.org
>>
https://lists.jboss.org/mailman/listinfo/hibernate-dev
>
--
steve(a)hibernate.org
http://hibernate.org