]
Steve Ebersole closed HHH-1336.
-------------------------------
Closing stale resolved issues
ForeignGenerator does not handle transient entities with an
entity-name properly
--------------------------------------------------------------------------------
Key: HHH-1336
URL:
http://opensource.atlassian.com/projects/hibernate/browse/HHH-1336
Project: Hibernate Core
Issue Type: Bug
Components: core
Affects Versions: 3.1
Environment: Hibernate 3.1, any platform/database
Reporter: Paul Andrews
Assignee: Steve Ebersole
Priority: Minor
Fix For: 3.1.1
I have an entity that has a one-to-one relationship with another entity, i.e. (ommitting
a bunch of mandatory stuff for the sake of brevity):
<class entity-name="AnEntity">
<id name="primaryKey">
<generator class="foreign">
<param name="property">aProperty</param>
</generator>
</id>
<one-to-one name="aProperty" entity-name="AnotherEntity"/>
</class>
I then create a detached (aka transient) instance of AnEntity with an embedded detached
instance of AnotherEntity with both of their id's set to null and then do a
saveOrUpdate(). Hibernate then throws an 'unknown entity mapping' exception with
the classname of the instance of AnotherEntity. In other words it is looking for a mapping
for the actual class name of the associated entity when it should be looking for a mapping
for the entity-name of the associated entity.
Tracing into the code ForeignGenerator.generate() calls session.save as follows:
Serializable id;
try {
id = ForeignKeys.getEntityIdentifierIfNotUnsaved(
type.getAssociatedEntityName(),
associatedObject,
sessionImplementor);
} catch (TransientObjectException toe) {
id = session.save(associatedObject);
}
Modifying the session.save() call as follows seems to fix the problem:
Serializable id;
try {
id = ForeignKeys.getEntityIdentifierIfNotUnsaved(
type.getAssociatedEntityName(),
associatedObject,
sessionImplementor);
} catch (TransientObjectException toe) {
id = session.save(type.getAssociatedEntityName(), associatedObject);
}
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: