[hibernate-dev] deprecate positional parameters?

Steve Ebersole steve at hibernate.org
Fri Feb 3 10:31:51 EST 2012


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 at hibernate.org
>> http://hibernate.org
>> _______________________________________________
>> hibernate-dev mailing list
>> hibernate-dev at lists.jboss.org
>> https://lists.jboss.org/mailman/listinfo/hibernate-dev
>

-- 
steve at hibernate.org
http://hibernate.org



More information about the hibernate-dev mailing list