[
http://opensource.atlassian.com/projects/hibernate/browse/HHH-5305?page=c...
]
Karsten Behrmann commented on HHH-5305:
---------------------------------------
After some meditation, I believe I assigned this to the wrong component:
it seems the ".id" reference comes from AbstractPropertyMapping, set in
initPropertyPaths(),
where the if() block around line 186 does not properly handle collections of components.
(disclaimer: I am not experienced in this code. This is the best I could pin the bug down,
but it may be wildly wrong)
selecting elements from a collection of elements fails strangely
----------------------------------------------------------------
Key: HHH-5305
URL:
http://opensource.atlassian.com/projects/hibernate/browse/HHH-5305
Project: Hibernate Core
Issue Type: Improvement
Components: query-hql
Affects Versions: 3.5.1
Environment: PostgreSQL / hsqldb
Reporter: Karsten Behrmann
Original Estimate: 6h
Remaining Estimate: 6h
The query
"select el from Foo f join f.elements el"
produces a SQL select clause for merely "elements.id" (though joined
correctly),
if "elements" is a set of composite-element.
It should rather select for all properties of the composite-element.
Effect:
- If there is no column called "id", the query fails database parse
(provoke by explicitly doing <key column="fooID" />)
- If the composite-element has more than one property, hibernate ResultSet parsing fails
asking for missing col_0_1_
- If the composite-element has one property, assignment-compatible with whatever the
database column "id" happens to be, the query succeeds, returning a list of
elements with the property set to the value of "id".
So it seems like support is almost there. This may be a regression, or a
not-quite-completed feature. Succeeding quietly with bad data is Not Good, but the case
should not occur much in practice (composite-element with one property is not very
useful).
Workaround: explicitly select each property, as in
"select el.name, el.created, el.importance from Foo f join f.elements el"
and manually instantiate the element class.
(This seems to still fail on <any> properties, but that is probably an unrelated
problem)
--
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