mirror of
https://github.com/hibernate/hibernate-orm
synced 2025-02-27 14:30:16 +00:00
HHH-11762 - PersistenceUnitUtilImpl#getIdentifier throws MappingException for non-entity
This commit is contained in:
parent
ec165296c6
commit
379e32e3f3
@ -11,6 +11,7 @@
|
||||
import javax.persistence.spi.LoadState;
|
||||
|
||||
import org.hibernate.Hibernate;
|
||||
import org.hibernate.MappingException;
|
||||
import org.hibernate.engine.spi.EntityEntry;
|
||||
import org.hibernate.engine.spi.ManagedEntity;
|
||||
import org.hibernate.engine.spi.SessionFactoryImplementor;
|
||||
@ -92,9 +93,15 @@ else if ( entity instanceof ManagedEntity ) {
|
||||
|
||||
private Object getIdentifierFromPersister(Object entity) {
|
||||
Class<?> entityClass = Hibernate.getClass( entity );
|
||||
EntityPersister persister = sessionFactory.getMetamodel().entityPersister( entityClass );
|
||||
if ( persister == null ) {
|
||||
throw new IllegalArgumentException( entityClass.getName() + " is not an entity" );
|
||||
final EntityPersister persister;
|
||||
try {
|
||||
persister = sessionFactory.getMetamodel().entityPersister( entityClass );
|
||||
if ( persister == null ) {
|
||||
throw new IllegalArgumentException( entityClass.getName() + " is not an entity" );
|
||||
}
|
||||
}
|
||||
catch (MappingException ex) {
|
||||
throw new IllegalArgumentException( entityClass.getName() + " is not an entity", ex );
|
||||
}
|
||||
return persister.getIdentifier( entity, null );
|
||||
}
|
||||
|
@ -15,6 +15,8 @@
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
|
||||
import static org.junit.Assert.fail;
|
||||
|
||||
/**
|
||||
* @author Steve Ebersole
|
||||
*/
|
||||
@ -51,6 +53,28 @@ public void getIdentifierTest() throws Exception {
|
||||
entityManager.close();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getIdentifierOfNonEntityTest() {
|
||||
try {
|
||||
entityManagerFactory().getPersistenceUnitUtil().getIdentifier( this );
|
||||
fail( "should have thrown IllegalArgumentException" );
|
||||
}
|
||||
catch (IllegalArgumentException ex) {
|
||||
// expected
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getIdentifierOfNullTest() {
|
||||
try {
|
||||
entityManagerFactory().getPersistenceUnitUtil().getIdentifier( null );
|
||||
fail( "should have thrown IllegalArgumentException" );
|
||||
}
|
||||
catch (IllegalArgumentException ex) {
|
||||
// expected
|
||||
}
|
||||
}
|
||||
|
||||
private NestedLegacyEntity createExisitingNestedLegacyEntity() {
|
||||
|
||||
ModernEntity modernEntity = new ModernEntity();
|
||||
|
Loading…
x
Reference in New Issue
Block a user