Re-enabled additional tests

This commit is contained in:
Andrea Boriero 2021-12-13 19:12:37 +01:00 committed by Andrea Boriero
parent 6ebceedf48
commit d89b28e1a9
8 changed files with 298 additions and 336 deletions

View File

@ -4,7 +4,7 @@
* License: GNU Lesser General Public License (LGPL), version 2.1 or later.
* See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
*/
package org.hibernate.test.jpa.procedure;
package org.hibernate.orm.test.jpa.procedure;
import java.sql.Connection;
import java.sql.SQLException;
@ -25,6 +25,7 @@ import org.junit.Before;
import org.junit.Test;
import org.hibernate.dialect.Oracle10gDialect;
import org.hibernate.dialect.OracleDialect;
import org.hibernate.engine.jdbc.connections.spi.JdbcConnectionAccess;
import org.hibernate.engine.jdbc.spi.JdbcServices;
import org.hibernate.engine.spi.SessionFactoryImplementor;
@ -41,7 +42,7 @@ import static org.junit.Assert.fail;
* @author Gail Badner
*/
@TestForIssue(jiraKey = "HHH-10756")
@RequiresDialect(Oracle10gDialect.class)
@RequiresDialect(OracleDialect.class)
public class StoreProcedureOutParameterByNameTest extends BaseEntityManagerFunctionalTestCase {
EntityManagerFactory entityManagerFactory;

View File

@ -4,7 +4,7 @@
* License: GNU Lesser General Public License (LGPL), version 2.1 or later.
* See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
*/
package org.hibernate.test.jpa.procedure;
package org.hibernate.orm.test.jpa.procedure;
import java.sql.Connection;
import java.sql.SQLException;
@ -25,6 +25,7 @@ import org.junit.Before;
import org.junit.Test;
import org.hibernate.dialect.Oracle10gDialect;
import org.hibernate.dialect.OracleDialect;
import org.hibernate.engine.jdbc.connections.spi.JdbcConnectionAccess;
import org.hibernate.engine.jdbc.spi.JdbcServices;
import org.hibernate.engine.spi.SessionFactoryImplementor;
@ -41,7 +42,7 @@ import static org.junit.Assert.fail;
* @author Gail Badner
*/
@TestForIssue(jiraKey = "HHH-10756")
@RequiresDialect(Oracle10gDialect.class)
@RequiresDialect(OracleDialect.class)
public class StoreProcedureOutParameterByPositionTest extends BaseEntityManagerFunctionalTestCase {
EntityManagerFactory entityManagerFactory;

View File

@ -4,7 +4,7 @@
* License: GNU Lesser General Public License (LGPL), version 2.1 or later.
* See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
*/
package org.hibernate.test.jpa.procedure;
package org.hibernate.orm.test.jpa.procedure;
import java.sql.Connection;
import java.sql.SQLException;
@ -21,6 +21,7 @@ import jakarta.persistence.StoredProcedureQuery;
import jakarta.persistence.Table;
import org.hibernate.dialect.Oracle10gDialect;
import org.hibernate.dialect.OracleDialect;
import org.hibernate.engine.jdbc.connections.spi.JdbcConnectionAccess;
import org.hibernate.engine.jdbc.spi.JdbcServices;
import org.hibernate.engine.spi.SessionFactoryImplementor;
@ -37,7 +38,7 @@ import static org.junit.Assert.fail;
* @author Andrea Boriero
*/
@TestForIssue(jiraKey = "HHH-9286")
@RequiresDialect(Oracle10gDialect.class)
@RequiresDialect(OracleDialect.class)
public class StoreProcedureRefCursorOutParameterByNameTest extends BaseEntityManagerFunctionalTestCase {
EntityManagerFactory entityManagerFactory;

View File

@ -4,7 +4,7 @@
* License: GNU Lesser General Public License (LGPL), version 2.1 or later.
* See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
*/
package org.hibernate.test.jpa.procedure;
package org.hibernate.orm.test.jpa.procedure;
import java.sql.Connection;
import java.sql.SQLException;
@ -21,6 +21,7 @@ import jakarta.persistence.StoredProcedureQuery;
import jakarta.persistence.Table;
import org.hibernate.dialect.Oracle10gDialect;
import org.hibernate.dialect.OracleDialect;
import org.hibernate.engine.jdbc.connections.spi.JdbcConnectionAccess;
import org.hibernate.engine.jdbc.spi.JdbcServices;
import org.hibernate.engine.spi.SessionFactoryImplementor;
@ -37,7 +38,7 @@ import static org.junit.Assert.fail;
* @author Andrea Boriero
*/
@TestForIssue(jiraKey = "HHH-9286")
@RequiresDialect(Oracle10gDialect.class)
@RequiresDialect(OracleDialect.class)
public class StoreProcedureRefCursorOutParameterByPositionTest extends BaseEntityManagerFunctionalTestCase {
EntityManagerFactory entityManagerFactory;

View File

@ -0,0 +1,278 @@
/*
* Hibernate, Relational Persistence for Idiomatic Java
*
* License: GNU Lesser General Public License (LGPL), version 2.1 or later.
* See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
*/
package org.hibernate.test.bootstrap.binding.annotations.access.jpa;
import org.hibernate.MappingException;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import org.hibernate.cfg.Environment;
import org.hibernate.engine.spi.SessionFactoryImplementor;
import org.hibernate.metamodel.mapping.internal.BasicEntityIdentifierMappingImpl;
import org.hibernate.orm.test.bootstrap.binding.annotations.access.jpa.Animal;
import org.hibernate.orm.test.bootstrap.binding.annotations.access.jpa.Being;
import org.hibernate.orm.test.bootstrap.binding.annotations.access.jpa.Course1;
import org.hibernate.orm.test.bootstrap.binding.annotations.access.jpa.Course2;
import org.hibernate.orm.test.bootstrap.binding.annotations.access.jpa.Course3;
import org.hibernate.orm.test.bootstrap.binding.annotations.access.jpa.Course4;
import org.hibernate.orm.test.bootstrap.binding.annotations.access.jpa.Course5;
import org.hibernate.orm.test.bootstrap.binding.annotations.access.jpa.Course6;
import org.hibernate.orm.test.bootstrap.binding.annotations.access.jpa.Course7;
import org.hibernate.orm.test.bootstrap.binding.annotations.access.jpa.Course8;
import org.hibernate.orm.test.bootstrap.binding.annotations.access.jpa.Horse;
import org.hibernate.orm.test.bootstrap.binding.annotations.access.jpa.Person;
import org.hibernate.orm.test.bootstrap.binding.annotations.access.jpa.Student;
import org.hibernate.orm.test.bootstrap.binding.annotations.access.jpa.User;
import org.hibernate.persister.entity.EntityPersister;
import org.hibernate.property.access.spi.GetterFieldImpl;
import org.hibernate.property.access.spi.GetterMethodImpl;
import org.hibernate.service.ServiceRegistry;
import org.hibernate.testing.ServiceRegistryBuilder;
import org.hibernate.testing.TestForIssue;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
/**
* Tests verifying the correct behaviour for the usage of {@code @jakarta.persistence.Access}.
*
* @author Hardy Ferentschik
*/
@SuppressWarnings({ "deprecation" })
public class AccessMappingTest {
private ServiceRegistry serviceRegistry;
@Before
public void setUp() {
serviceRegistry = ServiceRegistryBuilder.buildServiceRegistry( Environment.getProperties() );
}
@After
public void tearDown() {
if ( serviceRegistry != null ) {
ServiceRegistryBuilder.destroy( serviceRegistry );
}
}
@Test
public void testInconsistentAnnotationPlacement() {
Configuration cfg = new Configuration();
cfg.addAnnotatedClass( Course1.class );
cfg.addAnnotatedClass( Student.class );
SessionFactory sf = null;
try {
sf = cfg.buildSessionFactory( serviceRegistry );
fail( "@Id and @OneToMany are not placed consistently in test entities. SessionFactory creation should fail." );
}
catch (MappingException e) {
// success
}
finally {
if ( sf != null ) {
sf.close();
}
}
}
@Test
public void testFieldAnnotationPlacement() {
Configuration cfg = new Configuration();
Class<?> classUnderTest = Course6.class;
cfg.addAnnotatedClass( classUnderTest );
cfg.addAnnotatedClass( Student.class );
SessionFactoryImplementor factory = (SessionFactoryImplementor) cfg.buildSessionFactory( serviceRegistry );
try {
final EntityPersister entityPersister = factory.getEntityPersister( classUnderTest.getName() );
final BasicEntityIdentifierMappingImpl identifierMapping = (BasicEntityIdentifierMappingImpl) entityPersister.getIdentifierMapping();
assertTrue(
"Field access should be used.",
identifierMapping.getPropertyAccess().getGetter() instanceof GetterFieldImpl
);
}
finally {
factory.close();
}
}
@Test
public void testPropertyAnnotationPlacement() {
Configuration cfg = new Configuration();
Class<?> classUnderTest = Course7.class;
cfg.addAnnotatedClass( classUnderTest );
cfg.addAnnotatedClass( Student.class );
SessionFactoryImplementor factory = (SessionFactoryImplementor) cfg.buildSessionFactory( serviceRegistry );
try {
final EntityPersister entityPersister = factory.getEntityPersister( classUnderTest.getName() );
final BasicEntityIdentifierMappingImpl identifierMapping = (BasicEntityIdentifierMappingImpl) entityPersister.getIdentifierMapping();
assertTrue(
"Property access should be used.",
identifierMapping.getPropertyAccess().getGetter() instanceof GetterMethodImpl
);
}
finally {
factory.close();
}
}
@Test
public void testExplicitPropertyAccessAnnotationsOnProperty() throws Exception {
Configuration cfg = new Configuration();
Class<?> classUnderTest = Course2.class;
cfg.addAnnotatedClass( classUnderTest );
cfg.addAnnotatedClass( Student.class );
SessionFactoryImplementor factory = (SessionFactoryImplementor) cfg.buildSessionFactory( serviceRegistry );
try {
final EntityPersister entityPersister = factory.getEntityPersister( classUnderTest.getName() );
final BasicEntityIdentifierMappingImpl identifierMapping = (BasicEntityIdentifierMappingImpl) entityPersister.getIdentifierMapping();
assertTrue(
"Property access should be used.",
identifierMapping.getPropertyAccess().getGetter() instanceof GetterMethodImpl
);
}
finally {
factory.close();
}
}
@Test
public void testExplicitPropertyAccessAnnotationsOnField() {
Configuration cfg = new Configuration();
cfg.addAnnotatedClass( Course4.class );
cfg.addAnnotatedClass( Student.class );
SessionFactory sf = null;
try {
sf = cfg.buildSessionFactory( serviceRegistry );
fail( "@Id and @OneToMany are not placed consistently in test entities. SessionFactory creation should fail." );
}
catch (MappingException e) {
// success
}
finally {
if ( sf != null ) {
sf.close();
}
}
}
@Test
public void testExplicitPropertyAccessAnnotationsWithHibernateStyleOverride() {
Configuration cfg = new Configuration();
Class<?> classUnderTest = Course3.class;
cfg.addAnnotatedClass( classUnderTest );
cfg.addAnnotatedClass( Student.class );
SessionFactoryImplementor factory = (SessionFactoryImplementor) cfg.buildSessionFactory( serviceRegistry );
try {
final EntityPersister entityPersister = factory.getEntityPersister( classUnderTest.getName() );
final BasicEntityIdentifierMappingImpl identifierMapping = (BasicEntityIdentifierMappingImpl) entityPersister.getIdentifierMapping();
assertTrue(
"Field access should be used.",
identifierMapping.getPropertyAccess().getGetter() instanceof GetterFieldImpl
);
assertTrue(
"Property access should be used.",
entityPersister.getAttributeMapping( 0 ).getPropertyAccess().getGetter() instanceof GetterMethodImpl
);
}
finally {
factory.close();
}
}
@Test
public void testExplicitPropertyAccessAnnotationsWithJpaStyleOverride() {
Configuration cfg = new Configuration();
Class<?> classUnderTest = Course5.class;
cfg.addAnnotatedClass( classUnderTest );
cfg.addAnnotatedClass( Student.class );
SessionFactoryImplementor factory = (SessionFactoryImplementor) cfg.buildSessionFactory( serviceRegistry );
try {
final EntityPersister entityPersister = factory.getEntityPersister( classUnderTest.getName() );
final BasicEntityIdentifierMappingImpl identifierMapping = (BasicEntityIdentifierMappingImpl) entityPersister.getIdentifierMapping();
assertTrue(
"Field access should be used.",
identifierMapping.getPropertyAccess().getGetter() instanceof GetterFieldImpl
);
assertTrue(
"Property access should be used.",
entityPersister.getAttributeMapping( 0 ).getPropertyAccess().getGetter() instanceof GetterMethodImpl
);
}
finally {
factory.close();
}
}
@Test
public void testDefaultFieldAccessIsInherited() {
Configuration cfg = new Configuration();
Class<?> classUnderTest = User.class;
cfg.addAnnotatedClass( classUnderTest );
cfg.addAnnotatedClass( Person.class );
cfg.addAnnotatedClass( Being.class );
SessionFactoryImplementor factory = (SessionFactoryImplementor) cfg.buildSessionFactory( serviceRegistry );
try {
final EntityPersister entityPersister = factory.getEntityPersister( classUnderTest.getName() );
final BasicEntityIdentifierMappingImpl identifierMapping = (BasicEntityIdentifierMappingImpl) entityPersister.getIdentifierMapping();
assertTrue(
"Field access should be used since the default access mode gets inherited",
identifierMapping.getPropertyAccess().getGetter() instanceof GetterFieldImpl
);
}
finally {
factory.close();
}
}
@Test
public void testDefaultPropertyAccessIsInherited() {
Configuration cfg = new Configuration();
cfg.addAnnotatedClass( Horse.class );
cfg.addAnnotatedClass( Animal.class );
SessionFactoryImplementor factory = (SessionFactoryImplementor) cfg.buildSessionFactory( serviceRegistry );
try {
EntityPersister entityPersister = factory.getEntityPersister( Animal.class.getName() );
final BasicEntityIdentifierMappingImpl identifierMapping = (BasicEntityIdentifierMappingImpl) entityPersister.getIdentifierMapping();
assertTrue(
"Property access should be used since explicity configured via @Access",
identifierMapping.getPropertyAccess().getGetter() instanceof GetterMethodImpl
);
entityPersister = factory.getEntityPersister( Horse.class.getName() );
assertTrue(
"Field access should be used since the default access mode gets inherited",
entityPersister.getAttributeMapping( 0 ).getPropertyAccess().getGetter() instanceof GetterFieldImpl
);
}
finally {
factory.close();
}
}
@TestForIssue(jiraKey = "HHH-5004")
@Test
public void testAccessOnClassAndId() {
Configuration cfg = new Configuration();
cfg.addAnnotatedClass( Course8.class );
cfg.addAnnotatedClass( Student.class );
cfg.buildSessionFactory( serviceRegistry ).close();
}
}

View File

@ -26,6 +26,7 @@ import org.junit.Before;
import org.junit.Test;
import org.hibernate.dialect.Oracle10gDialect;
import org.hibernate.dialect.OracleDialect;
import org.hibernate.engine.jdbc.connections.spi.JdbcConnectionAccess;
import org.hibernate.engine.jdbc.spi.JdbcServices;
import org.hibernate.engine.spi.SessionFactoryImplementor;
@ -41,7 +42,7 @@ import static org.junit.Assert.fail;
* @author Gail Badner
*/
@TestForIssue(jiraKey = "HHH-10761")
@RequiresDialect(Oracle10gDialect.class)
@RequiresDialect(OracleDialect.class)
public class StoredProcedureNullParameterByNameTest extends BaseEntityManagerFunctionalTestCase {
EntityManagerFactory entityManagerFactory;
@ -50,6 +51,12 @@ public class StoredProcedureNullParameterByNameTest extends BaseEntityManagerFun
return new Class[] {User.class};
}
// @Override
// @SuppressWarnings({ "unchecked" })
// protected void addConfigOptions(Map options) {
// options.put( org.hibernate.cfg.AvailableSettings.PROCEDURE_NULL_PARAM_PASSING, "true" );
// }
@Before
public void startUp() {
entityManagerFactory = getOrCreateEntityManager().getEntityManagerFactory();

View File

@ -1,63 +0,0 @@
/*
* Hibernate, Relational Persistence for Idiomatic Java
*
* License: GNU Lesser General Public License (LGPL), version 2.1 or later
* See the lgpl.txt file in the root directory or http://www.gnu.org/licenses/lgpl-2.1.html
*/
package org.hibernate.jpa.test.criteria.paths;
import java.util.Map;
import jakarta.persistence.criteria.CriteriaBuilder;
import jakarta.persistence.criteria.JoinType;
import jakarta.persistence.metamodel.Attribute;
import jakarta.persistence.metamodel.Bindable;
import jakarta.persistence.metamodel.SingularAttribute;
import jakarta.persistence.metamodel.Type;
import org.hibernate.cfg.AvailableSettings;
import org.hibernate.jpa.test.BaseEntityManagerFunctionalTestCase;
import org.junit.Test;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
import static org.mockito.Mockito.withSettings;
/**
* @author Andrea Boriero
*/
public class EntityModeMapJoinsTest extends BaseEntityManagerFunctionalTestCase {
@Override
protected String[] getMappings() {
return new String[] {
getClass().getPackage().getName().replace( '.', '/' ) + "/PolicyAndDistribution.hbm.xml"
};
}
@Override
protected void addConfigOptions(Map options) {
super.addConfigOptions( options );
// make sure that dynamic-map mode entity types are returned in the metamodel.
options.put( AvailableSettings.JPA_METAMODEL_POPULATION, "enabled" );
}
/**
* When building a join from a non-class based entity (EntityMode.MAP), make sure you get the Bindable from
* the SingularAttribute as the join model. If you don't, you'll get the first non-classed based entity
* you added to your configuration. Regression for HHH-9142.
*/
@Test
public void testEntityModeMapJoins() throws Exception {
CriteriaBuilder criteriaBuilder = mock( CriteriaBuilder.class);
PathSource pathSource = mock( PathSource.class);
SingularAttribute joinAttribute = mock( SingularAttribute.class);
when(joinAttribute.getPersistentAttributeType()).thenReturn( Attribute.PersistentAttributeType.MANY_TO_ONE);
Type joinType = mock( Type.class, withSettings().extraInterfaces( Bindable.class));
when(joinAttribute.getType()).thenReturn(joinType);
SingularAttributeJoin join = new SingularAttributeJoin( criteriaBuilder, null, pathSource, joinAttribute, JoinType.LEFT);
assertEquals( joinType, join.getModel());
}
}

View File

@ -1,264 +0,0 @@
/*
* Hibernate, Relational Persistence for Idiomatic Java
*
* License: GNU Lesser General Public License (LGPL), version 2.1 or later.
* See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
*/
package org.hibernate.test.annotations.access.jpa;
import org.hibernate.MappingException;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import org.hibernate.cfg.Environment;
import org.hibernate.engine.spi.SessionFactoryImplementor;
import org.hibernate.property.access.spi.GetterFieldImpl;
import org.hibernate.property.access.spi.GetterMethodImpl;
import org.hibernate.service.ServiceRegistry;
import org.hibernate.tuple.entity.EntityTuplizer;
import org.hibernate.testing.ServiceRegistryBuilder;
import org.hibernate.testing.TestForIssue;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
/**
* Tests verifying the correct behaviour for the usage of {@code @jakarta.persistence.Access}.
*
* @author Hardy Ferentschik
*/
@SuppressWarnings({ "deprecation" })
public class AccessMappingTest {
private ServiceRegistry serviceRegistry;
@Before
public void setUp() {
serviceRegistry = ServiceRegistryBuilder.buildServiceRegistry( Environment.getProperties() );
}
@After
public void tearDown() {
if ( serviceRegistry != null ) {
ServiceRegistryBuilder.destroy( serviceRegistry );
}
}
@Test
public void testInconsistentAnnotationPlacement() throws Exception {
Configuration cfg = new Configuration();
cfg.addAnnotatedClass( Course1.class );
cfg.addAnnotatedClass( Student.class );
SessionFactory sf = null;
try {
sf = cfg.buildSessionFactory( serviceRegistry );
fail( "@Id and @OneToMany are not placed consistently in test entities. SessionFactory creation should fail." );
}
catch (MappingException e) {
// success
}
finally {
if ( sf != null ) {
sf.close();
}
}
}
@Test
public void testFieldAnnotationPlacement() throws Exception {
Configuration cfg = new Configuration();
Class<?> classUnderTest = Course6.class;
cfg.addAnnotatedClass( classUnderTest );
cfg.addAnnotatedClass( Student.class );
SessionFactoryImplementor factory = (SessionFactoryImplementor) cfg.buildSessionFactory( serviceRegistry );
try {
EntityTuplizer tuplizer = factory.getEntityPersister( classUnderTest.getName() )
.getEntityMetamodel()
.getTuplizer();
assertTrue(
"Field access should be used.",
tuplizer.getIdentifierGetter() instanceof GetterFieldImpl
);
}
finally {
factory.close();
}
}
@Test
public void testPropertyAnnotationPlacement() throws Exception {
Configuration cfg = new Configuration();
Class<?> classUnderTest = Course7.class;
cfg.addAnnotatedClass( classUnderTest );
cfg.addAnnotatedClass( Student.class );
SessionFactoryImplementor factory = (SessionFactoryImplementor) cfg.buildSessionFactory( serviceRegistry );
try {
EntityTuplizer tuplizer = factory.getEntityPersister( classUnderTest.getName() )
.getEntityMetamodel()
.getTuplizer();
assertTrue(
"Property access should be used.",
tuplizer.getIdentifierGetter() instanceof GetterMethodImpl
);
}
finally {
factory.close();
}
}
@Test
public void testExplicitPropertyAccessAnnotationsOnProperty() throws Exception {
Configuration cfg = new Configuration();
Class<?> classUnderTest = Course2.class;
cfg.addAnnotatedClass( classUnderTest );
cfg.addAnnotatedClass( Student.class );
SessionFactoryImplementor factory = (SessionFactoryImplementor) cfg.buildSessionFactory( serviceRegistry );
try {
EntityTuplizer tuplizer = factory.getEntityPersister( classUnderTest.getName() )
.getEntityMetamodel()
.getTuplizer();
assertTrue(
"Property access should be used.",
tuplizer.getIdentifierGetter() instanceof GetterMethodImpl
);
}
finally {
factory.close();
}
}
@Test
public void testExplicitPropertyAccessAnnotationsOnField() throws Exception {
Configuration cfg = new Configuration();
cfg.addAnnotatedClass( Course4.class );
cfg.addAnnotatedClass( Student.class );
SessionFactory sf= null;
try {
sf = cfg.buildSessionFactory( serviceRegistry );
fail( "@Id and @OneToMany are not placed consistently in test entities. SessionFactory creation should fail." );
}
catch (MappingException e) {
// success
}
finally {
if ( sf != null ) {
sf.close();
}
}
}
@Test
public void testExplicitPropertyAccessAnnotationsWithHibernateStyleOverride() throws Exception {
Configuration cfg = new Configuration();
Class<?> classUnderTest = Course3.class;
cfg.addAnnotatedClass( classUnderTest );
cfg.addAnnotatedClass( Student.class );
SessionFactoryImplementor factory = (SessionFactoryImplementor) cfg.buildSessionFactory( serviceRegistry );
try {
EntityTuplizer tuplizer = factory.getEntityPersister( classUnderTest.getName() )
.getEntityMetamodel()
.getTuplizer();
assertTrue(
"Field access should be used.",
tuplizer.getIdentifierGetter() instanceof GetterFieldImpl
);
assertTrue(
"Property access should be used.",
tuplizer.getGetter( 0 ) instanceof GetterMethodImpl
);
}
finally {
factory.close();
}
}
@Test
public void testExplicitPropertyAccessAnnotationsWithJpaStyleOverride() throws Exception {
Configuration cfg = new Configuration();
Class<?> classUnderTest = Course5.class;
cfg.addAnnotatedClass( classUnderTest );
cfg.addAnnotatedClass( Student.class );
SessionFactoryImplementor factory = (SessionFactoryImplementor) cfg.buildSessionFactory( serviceRegistry );
try {
EntityTuplizer tuplizer = factory.getEntityPersister( classUnderTest.getName() )
.getEntityMetamodel()
.getTuplizer();
assertTrue(
"Field access should be used.",
tuplizer.getIdentifierGetter() instanceof GetterFieldImpl
);
assertTrue(
"Property access should be used.",
tuplizer.getGetter( 0 ) instanceof GetterMethodImpl
);
}
finally {
factory.close();
}
}
@Test
public void testDefaultFieldAccessIsInherited() throws Exception {
Configuration cfg = new Configuration();
Class<?> classUnderTest = User.class;
cfg.addAnnotatedClass( classUnderTest );
cfg.addAnnotatedClass( Person.class );
cfg.addAnnotatedClass( Being.class );
SessionFactoryImplementor factory = (SessionFactoryImplementor) cfg.buildSessionFactory( serviceRegistry );
try {
EntityTuplizer tuplizer = factory.getEntityPersister( classUnderTest.getName() )
.getEntityMetamodel()
.getTuplizer();
assertTrue(
"Field access should be used since the default access mode gets inherited",
tuplizer.getIdentifierGetter() instanceof GetterFieldImpl
);
}
finally {
factory.close();
}
}
@Test
public void testDefaultPropertyAccessIsInherited() throws Exception {
Configuration cfg = new Configuration();
cfg.addAnnotatedClass( Horse.class );
cfg.addAnnotatedClass( Animal.class );
SessionFactoryImplementor factory = (SessionFactoryImplementor) cfg.buildSessionFactory( serviceRegistry );
try {
EntityTuplizer tuplizer = factory.getEntityPersister( Animal.class.getName() )
.getEntityMetamodel()
.getTuplizer();
assertTrue(
"Property access should be used since explicity configured via @Access",
tuplizer.getIdentifierGetter() instanceof GetterMethodImpl
);
tuplizer = factory.getEntityPersister( Horse.class.getName() )
.getEntityMetamodel()
.getTuplizer();
assertTrue(
"Field access should be used since the default access mode gets inherited",
tuplizer.getGetter( 0 ) instanceof GetterFieldImpl
);
}
finally {
factory.close();
}
}
@TestForIssue(jiraKey = "HHH-5004")
@Test
public void testAccessOnClassAndId() throws Exception {
Configuration cfg = new Configuration();
cfg.addAnnotatedClass( Course8.class );
cfg.addAnnotatedClass( Student.class );
cfg.buildSessionFactory( serviceRegistry ).close();
}
}