/*
* 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.quote;
import java.util.Iterator;
import java.util.Map;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.cfg.AvailableSettings;
import org.hibernate.mapping.Column;
import org.hibernate.mapping.Table;
import org.hibernate.mapping.UniqueKey;
import org.hibernate.testing.TestForIssue;
import org.hibernate.testing.junit4.BaseNonConfigCoreFunctionalTestCase;
import org.junit.Test;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
/**
* @author Emmanuel Bernard
* @author Brett Meyer
*/
public class QuoteGlobalTest extends BaseNonConfigCoreFunctionalTestCase {
@Test
@TestForIssue(jiraKey = "HHH-7890")
public void testQuotedUniqueConstraint() {
Iterator<UniqueKey> itr = metadata().getEntityBinding( Person.class.getName() )
.getTable().getUniqueKeyIterator();
while ( itr.hasNext() ) {
UniqueKey uk = itr.next();
assertEquals( uk.getColumns().size(), 1 );
assertEquals( uk.getColumn( 0 ).getName(), "name");
return;
}
fail( "GLOBALLY_QUOTED_IDENTIFIERS caused the unique key creation to fail." );
}
@Test
public void testQuoteManytoMany() {
Session s = openSession();
Transaction tx = s.beginTransaction();
User u = new User();
s.persist( u );
Role r = new Role();
s.persist( r );
u.getRoles().add( r );
s.flush();
s.clear();
u = (User) s.get( User.class, u.getId() );
assertEquals( 1, u.getRoles().size() );
tx.rollback();
String role = User.class.getName() + ".roles";
assertEquals( "User_Role", metadata().getCollectionBinding( role ).getCollectionTable().getName() );
s.close();
}
@Test
@TestForIssue(jiraKey = "HHH-8520")
public void testHbmQuoting() {
doTestHbmQuoting( DataPoint.class );
doTestHbmQuoting( AssociatedDataPoint.class );
}
private void doTestHbmQuoting(Class clazz) {
Table table = metadata().getEntityBinding( clazz.getName() ).getTable();
assertTrue( table.isQuoted() );
Iterator itr = table.getColumnIterator();
while(itr.hasNext()) {
Column column = (Column) itr.next();
assertTrue( column.isQuoted() );
}
}
@Override
protected void addSettings(Map settings) {
settings.put( AvailableSettings.GLOBALLY_QUOTED_IDENTIFIERS, "true" );
}
@Override
protected Class[] getAnnotatedClasses() {
return new Class[] {
User.class,
Role.class,
Phone.class,
Person.class,
House.class
};
}
@Override
protected String[] getMappings() {
return new String[] { "quote/DataPoint.hbm.xml" };
}
}