[hibernate-issues] [Hibernate-JIRA] Commented: (HHH-1851) "special" identifier property in HQL unnecessaryily causing problems

Steve Ebersole (JIRA) noreply at atlassian.com
Wed Aug 23 09:50:24 EDT 2006


    [ http://opensource.atlassian.com/projects/hibernate/browse/HHH-1851?page=comments#action_24047 ] 

Steve Ebersole commented on HHH-1851:
-------------------------------------

And adding some new mapping construct is fine, but there still needs to be code "under the covers" which knows what to do with this...

> "special" identifier property in HQL unnecessaryily causing problems
> --------------------------------------------------------------------
>
>          Key: HHH-1851
>          URL: http://opensource.atlassian.com/projects/hibernate/browse/HHH-1851
>      Project: Hibernate3
>         Type: Improvement

>   Components: query-hql
>     Versions: 3.0 alpha, 3.0 beta 1, 3.0 beta 2, 3.0 beta 3, 3.0 beta 4, 3.0 rc 1, 3.0 final, 3.0.1, 3.0.2, 3.0.3, 3.0.4, 3.0.5, 3.1 beta 1, 3.1 beta 2, 3.1 rc 1, 3.1 rc2, 3.1 rc3, 3.1, 3.1.1, 3.1.2, 3.1.3
>  Environment: independent, all versions all databases.
>     Reporter: Gunther Schadow

>
> Original Estimate: 1 hour
>         Remaining: 1 hour
>
> I HAVE REPORTED THIS PROBLEM BEFORE IN  HHH-1127. THEN IT WAS FLAGGED AS "DUPLICATE" AND CLOSED PLEASE TELL ME WHAT IS THE ID OF THE REPORT WHICH THIS SUPPOSEDLY DUPLICATES?
> When a user decides to use the name "id" as the name of a property, HQL queries break with unspecific exceptions, because HQL assumes "id" as reserved for the Hibernate id attribute defined in the hbm file using the <id .../> tag. This is bad design in our view, because it puts an unnecessary constraint and interference with the otherwise transparent "object persistence for idiomatic Java."
> For example, a mapping file may contain:
> <class name="MyObject">
>   <id name="internalId" ... />
>   <property name="id" .../>
>   <property name="foo" .../>
> </class>
> And since even the <id .../> element has a @name property, why can't HQL use that name rather than shadowing a perfectly good identifier for a normal property?
> The HQL query
> from MyObject where id='123'
> and this would fail because 'id' in HQL means the 'internalId' property not the property called 'id'. But if I wanted to access the internalId I could just as well have sayd:
> from MyObject where internalId='123'
> I do not understand the value of this feature and it is causing us tremendous problems, because our object property names are fixed by some larger standards body and I can't just replace "id" with some other name just because of HQL!
> I am currently hacking every version of Hibernate by changing only one line in
> org.hibernate.persister.entity.EntityPersister
> from
> public static final String ENTITY_ID = "id";
> to
> public static final String ENTITY_ID = "hid";
> But that of course is a problem and also breaking it for anyone who uses "hid" as a normal property name. 
> I really don't understand what the value of this feature is and I am asking you to drop it alltogether or turn it into some really weird name or some function, whatever, but this "special" id attribute really, really hurts.
> Please, if you close this issue again, at least comment about your rationale or link it with the bug where it had been discussed. Thank you!

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://opensource.atlassian.com/projects/hibernate/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira




More information about the hibernate-issues mailing list