[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:48:24 EDT 2006
[ http://opensource.atlassian.com/projects/hibernate/browse/HHH-1851?page=comments#action_24046 ]
Steve Ebersole commented on HHH-1851:
-------------------------------------
There is a feature of Hibernate where a user can map a java class as an entity, even though that java class may not define a property to hold the id value. consider:
class MyEntity {
private String name;
}
<class name="MyEntity">
<id column="ID" .../>
<property name="name"/>
</class>
I mean, i think you understand this issue. As you say, you just fail to see the utility of it. Well, perhaps. The feature is actually being deprecated. But regardless, the ramifications of the initial choice to use the special "id" keyword to always refer to the id property is subtly much deeper than you realize, I am certain. A simple "use some other keyword" is not going to address all situations.
> "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