[
https://hibernate.onjira.com/browse/HHH-7133?page=com.atlassian.jira.plug...
]
Steve Ebersole commented on HHH-7133:
-------------------------------------
Guenther, I fixed the issue the values still being available in the "session
cache" by the old natrual id values.
But as for the second test, I am not certain those domain classes are correct. AFAIK an
@Entity cannot extend from an @Entity without inheritence strategy. As it is, you seem to
really be doing using @Entity on the base (C) as a @MappedSuperclass. Waiting for
confirmation that my understand is correct there.
NaturalIdLoadAccess not correctly working on mutable NaturalId's
----------------------------------------------------------------
Key: HHH-7133
URL:
https://hibernate.onjira.com/browse/HHH-7133
Project: Hibernate ORM
Issue Type: Bug
Components: core
Affects Versions: 4.1.0
Environment: Hibernate4.1.0, db independent (HSQLDB used in attached testcase)
Reporter: Guenther Demetz
Assignee: Steve Ebersole
Labels: Modifieable, NaturalId
Fix For: 4.1.2
Attachments: TestCaseModifieableNaturalId.jar
Original Estimate: 16h
Remaining Estimate: 16h
1. After updating the value of a mutable NaturalId, the entity object can be retrieved
with the new value, but also with the old value.
assertNotSame(session.bySimpleNaturalId(C.class).load("1"),
session.bySimpleNaturalId(C.class).load("3")); --> failing
Cause: On deletions the internal NaturalId cache get synchronized properly, but not
on modifications (no synchronization provided at all)
2. When inserting or deleting an entity object, the entity-persister of the object's
concrete class is considered as cache-region.
When loading an entity object by NaturalId, indeed the entity-persister of the
declaring class is considered as cache-region.
Session.byNaturalId(declaringclass).load(...)
As declaringclass may be the superclass of a concrete subclass,
the NaturalId-synchronisation (currently called only on deletions) does synchronize
the wrong cache-region.
(it tries to remove the entry in the cache-region of the subclass-persister,
but the entry is actually cached in the cache-region of the superclass persister)
N.B: This issue has nothing to do with spreading @NaturalId across an entity hierarchy
(HHH-7129),
in attached testcase the NaturalId is declared exclusively in the root class.
Attached testcase demonstrates both bugs.
--
This message is automatically generated by JIRA.
For more information on JIRA, see:
http://www.atlassian.com/software/jira