[hibernate-issues] [Hibernate-JIRA] Created: (HHH-5808) ObjectNotFoundException for an audited optional association. Envers is creating a proxy even when the association is null.
Andrei Zagorneanu (JIRA)
noreply at atlassian.com
Thu Dec 23 07:30:05 EST 2010
ObjectNotFoundException for an audited optional association. Envers is creating a proxy even when the association is null.
--------------------------------------------------------------------------------------------------------------------------
Key: HHH-5808
URL: http://opensource.atlassian.com/projects/hibernate/browse/HHH-5808
Project: Hibernate Core
Issue Type: Bug
Components: envers
Affects Versions: 3.6.0
Environment: Hibernate 3.6.0.Final, reproducible on Oracle and H2 with both EntityManager and Session
Reporter: Andrei Zagorneanu
Attachments: TestCase-Optional-Unidirectional-OneToOne.zip
Hi,
I have a Contact entity which has an optional unidirectional 1:1 association with an Address entity. Now, when I'm retrieving a version of Contact which doesn't have an Address from audit tables I can see that Address is not null, instead Envers is creating a proxy for it. When I'm trying to access that Address proxy I'm getting: org.hibernate.ObjectNotFoundException: No row with the given identifier exists
This is my entity class:
@Entity
@Audited
public class Contact {
// some fields
private Address address;
@OneToOne(cascade = { CascadeType.ALL }, orphanRemoval = true)
@JoinColumns( {
@JoinColumn(name = "ID_ADDRESS", referencedColumnName = "ID_ADDRESS"),
@JoinColumn(name = "VER_ADDRESS", referencedColumnName = "VER_ADDRESS") })
public Address getAddress() {
return this.address;
}
Now when I'm retrieving a Contact revision:
AuditReader reader = AuditReaderFactory.get(session);
Contact contact = reader.find(Contact.class, id, revision);
// here address is not null
Address address = contact.getAddress();
// here I'm getting org.hibernate.ObjectNotFoundException
address.getId();
The exception which I'm getting:
org.hibernate.ObjectNotFoundException: No row with the given identifier exists: [com.acme.model.address.Address#com.acme.model.address.AddressPK at 143fd2a[
id=<null>
ver=<null>
]]
I have to use composite PK because Address is a legacy table.
I posted this issue on Envers forum: http://community.jboss.org/thread/159906?tstart=0
The issue is reproducible while working with EntityManager and as well with Session.
I attached a TestNG test case for this.
--
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