/*
* 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.collectionelement;
import org.hibernate.boot.MetadataBuilder;
import org.hibernate.boot.model.naming.ImplicitNamingStrategyJpaCompliantImpl;
import org.hibernate.testing.TestForIssue;
import org.junit.Test;
/**
* Tests @ElementCollection using the "improved" NamingStrategyDelegator which complies
* with JPA spec.
*
* @author Gail Badner
*/
public class ImprovedNamingCollectionElementTest extends DefaultNamingCollectionElementTest {
@Override
protected void configureMetadataBuilder(MetadataBuilder metadataBuilder) {
metadataBuilder.applyImplicitNamingStrategy( ImplicitNamingStrategyJpaCompliantImpl.INSTANCE );
}
@Test
@TestForIssue( jiraKey = "HHH-9387")
public void testDefaultTableNameOwnerEntityNameAndPKColumnOverride() {
// NOTE: expected JPA entity names are explicit here (rather than just getting them from the PersistentClass)
// to ensure that entity names/tables are not changed (which would invalidate these test cases).
// Matrix has @Entity(name="Mtx"); entity table name defaults to "Mtx"; owner PK column is configured as "mId"
checkDefaultCollectionTableName( Matrix.class, "mvalues", "Mtx_mvalues" );
}
@Test
@TestForIssue( jiraKey = "HHH-9387")
public void testDefaultTableNameOwnerPrimaryTableAndEntityNamesOverride() {
// NOTE: expected JPA entity names are explicit here (rather than just getting them from the PersistentClass)
// to ensure that entity names/tables are not changed (which would invalidate these test cases).
// Owner has @Entity( name="OWNER") @Table( name="OWNER_TABLE")
checkDefaultCollectionTableName( Owner.class, "elements", "OWNER_elements" );
}
@Test
@TestForIssue( jiraKey = "HHH-9389")
public void testDefaultJoinColumnOwnerEntityNameAndPKColumnOverride() {
// NOTE: expected JPA entity names are explicit here (rather than just getting them from the PersistentClass)
// to ensure that entity names/tables are not changed (which would invalidate these test cases).
// Matrix has @Entity(name="Mtx"); entity table name defaults to "Mtx"; owner PK column is configured as "mId"
checkDefaultJoinColumnName( Matrix.class, "mvalues", "Mtx_mId" );
}
@Test
@TestForIssue( jiraKey = "HHH-9389")
public void testDefaultJoinColumnOwnerPrimaryTableAndEntityNamesOverride() {
// NOTE: expected JPA entity names are explicit here (rather than just getting them from the PersistentClass)
// to ensure that entity names/tables are not changed (which would invalidate these test cases).
// Owner has @Entity( name="OWNER") @Table( name="OWNER_TABLE")
checkDefaultJoinColumnName( Owner.class, "elements", "OWNER_id" );
}
}