/*
* 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.namingstrategy;
import org.hibernate.boot.MetadataBuilder;
import org.hibernate.boot.model.naming.ImplicitNamingStrategy;
import org.hibernate.boot.model.naming.PhysicalNamingStrategy;
import org.hibernate.mapping.Column;
import org.hibernate.mapping.PersistentClass;
import org.hibernate.testing.TestForIssue;
import org.hibernate.testing.junit4.BaseNonConfigCoreFunctionalTestCase;
import org.junit.Test;
import static org.junit.Assert.assertEquals;
/**
* @author Emmanuel Bernard
* @author Lukasz Antoniak (lukasz dot antoniak at gmail dot com)
*/
public class NamingStrategyTest extends BaseNonConfigCoreFunctionalTestCase {
@Override
protected void configureMetadataBuilder(MetadataBuilder metadataBuilder) {
metadataBuilder.applyImplicitNamingStrategy( (ImplicitNamingStrategy) TestNamingStrategy.INSTANCE );
metadataBuilder.applyPhysicalNamingStrategy( (PhysicalNamingStrategy) TestNamingStrategy.INSTANCE );
}
@Override
protected Class<?>[] getAnnotatedClasses() {
return new Class<?>[] {
Item.class
};
}
@Override
public String[] getMappings() {
return new String[] {
"namingstrategy/Customers.hbm.xml"
};
}
@Test
public void testDatabaseColumnNames() {
PersistentClass classMapping = metadata().getEntityBinding( Customers.class.getName() );
Column stateColumn = (Column) classMapping.getProperty( "specified_column" ).getColumnIterator().next();
assertEquals( "CN_specified_column", stateColumn.getName() );
}
@Test
@TestForIssue(jiraKey = "HHH-5848")
public void testDatabaseTableNames() {
PersistentClass classMapping = metadata().getEntityBinding( Item.class.getName() );
Column secTabColumn = (Column) classMapping.getProperty( "specialPrice" ).getColumnIterator().next();
assertEquals( "TAB_ITEMS_SEC", secTabColumn.getValue().getTable().getName() );
Column tabColumn = (Column) classMapping.getProperty( "price" ).getColumnIterator().next();
assertEquals( "TAB_ITEMS", tabColumn.getValue().getTable().getName() );
}
}