[
http://opensource.atlassian.com/projects/hibernate/browse/HHH-1851?page=c...
]
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....
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira