HHH-3868 Fix null pointer exception on merge of entity with transient component
This commit is contained in:
parent
00eaed6dfe
commit
b197f6a643
|
@ -680,6 +680,9 @@ public class StatefulPersistenceContext implements PersistenceContext {
|
|||
@Override
|
||||
public Object proxyFor(Object impl) throws HibernateException {
|
||||
final EntityEntry e = getEntry( impl );
|
||||
if ( e == null ) {
|
||||
return impl;
|
||||
}
|
||||
return proxyFor( e.getPersister(), e.getEntityKey(), impl );
|
||||
}
|
||||
|
||||
|
|
|
@ -31,6 +31,7 @@ import java.util.ArrayList;
|
|||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.UUID;
|
||||
|
||||
import org.hibernate.Query;
|
||||
import org.hibernate.Session;
|
||||
|
@ -39,6 +40,7 @@ import org.hibernate.test.annotations.embedded.FloatLeg.RateIndex;
|
|||
import org.hibernate.test.annotations.embedded.Leg.Frequency;
|
||||
import org.hibernate.test.util.SchemaUtil;
|
||||
import org.hibernate.testing.FailureExpectedWithNewMetamodel;
|
||||
import org.hibernate.testing.TestForIssue;
|
||||
import org.hibernate.testing.junit4.BaseCoreFunctionalTestCase;
|
||||
import org.junit.Test;
|
||||
|
||||
|
@ -517,6 +519,18 @@ public class EmbeddedTest extends BaseCoreFunctionalTestCase {
|
|||
s.close();
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestForIssue(jiraKey = "HHH-3868")
|
||||
public void testTransientMergeComponentParent() {
|
||||
Session s = openSession();
|
||||
Transaction tx = s.beginTransaction();
|
||||
Book b = new Book();
|
||||
b.setIsbn( UUID.randomUUID().toString() );
|
||||
b.setSummary( new Summary() );
|
||||
b = (Book) session.merge( b );
|
||||
tx.commit();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Class[] getAnnotatedClasses() {
|
||||
return new Class[]{
|
||||
|
|
Loading…
Reference in New Issue