[hibernate-dev] deprecate positional parameters?

Steve Ebersole steve at hibernate.org
Mon Feb 6 07:27:22 EST 2012


https://hibernate.onjira.com/browse/HHH-7023

On Fri 03 Feb 2012 02:28:41 PM CST, Gail Badner wrote:
> +1 for me as well.
>
> ----- Original Message -----
>> From: "Hardy Ferentschik"<hardy at hibernate.org>
>> To: "Hibernate"<hibernate-dev at lists.jboss.org>
>> Sent: Friday, February 3, 2012 7:44:48 AM
>> Subject: Re: [hibernate-dev] deprecate positional parameters?
>>
>> +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 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
>>
>>
>> _______________________________________________
>> hibernate-dev mailing list
>> hibernate-dev at lists.jboss.org
>> https://lists.jboss.org/mailman/listinfo/hibernate-dev
>>
> _______________________________________________
> 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