HHH-11455 - Test case.
This commit is contained in:
parent
5e29497d60
commit
39c04f14ae
|
@ -0,0 +1,193 @@
|
||||||
|
/*
|
||||||
|
* 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.schemaupdate;
|
||||||
|
|
||||||
|
import javax.persistence.Entity;
|
||||||
|
import javax.persistence.Id;
|
||||||
|
import javax.persistence.MappedSuperclass;
|
||||||
|
import javax.persistence.Table;
|
||||||
|
|
||||||
|
import org.hibernate.Session;
|
||||||
|
import org.hibernate.SessionFactory;
|
||||||
|
import org.hibernate.boot.registry.BootstrapServiceRegistryBuilder;
|
||||||
|
import org.hibernate.boot.registry.StandardServiceRegistry;
|
||||||
|
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
|
||||||
|
import org.hibernate.cfg.AvailableSettings;
|
||||||
|
import org.hibernate.cfg.Configuration;
|
||||||
|
import org.hibernate.dialect.Dialect;
|
||||||
|
import org.hibernate.dialect.MySQL5Dialect;
|
||||||
|
import org.hibernate.engine.spi.Mapping;
|
||||||
|
import org.hibernate.tool.schema.extract.spi.TableInformation;
|
||||||
|
import org.junit.After;
|
||||||
|
import org.junit.Before;
|
||||||
|
import org.junit.Test;
|
||||||
|
|
||||||
|
import org.hibernate.testing.RequiresDialect;
|
||||||
|
import org.hibernate.testing.TestForIssue;
|
||||||
|
import org.hibernate.testing.junit4.BaseUnitTestCase;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test to illustrate that the <tt>org.hibernate.mapping.Table#sqlAlterStrings</tt> method
|
||||||
|
* uses legacy logic for building table names and doesn't adequately specify the catalog
|
||||||
|
* or schema name properly.
|
||||||
|
*
|
||||||
|
* @author Chris Cranford
|
||||||
|
*/
|
||||||
|
@RequiresDialect(MySQL5Dialect.class)
|
||||||
|
@TestForIssue(jiraKey = "HHH-11455")
|
||||||
|
public class SchemaUpdateSchemaNameTest extends BaseUnitTestCase {
|
||||||
|
|
||||||
|
@Before
|
||||||
|
public void buildInitialSchema() throws Exception {
|
||||||
|
// Builds the initial table in the schema.
|
||||||
|
StandardServiceRegistry ssr = null;
|
||||||
|
try {
|
||||||
|
final Configuration cfg = buildConfiguration( SimpleFirst.class );
|
||||||
|
ssr = new StandardServiceRegistryBuilder(
|
||||||
|
new BootstrapServiceRegistryBuilder().build(),
|
||||||
|
cfg.getStandardServiceRegistryBuilder().getAggregatedCfgXml() )
|
||||||
|
.applySettings( cfg.getProperties() )
|
||||||
|
.build();
|
||||||
|
cfg.buildSessionFactory( ssr ).close();
|
||||||
|
}
|
||||||
|
finally {
|
||||||
|
StandardServiceRegistryBuilder.destroy( ssr );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@After
|
||||||
|
public void cleanup() {
|
||||||
|
// Drops the table after the sql alter test.
|
||||||
|
StandardServiceRegistry ssr = null;
|
||||||
|
try {
|
||||||
|
// build simple configuration
|
||||||
|
final Configuration cfg = buildConfiguration( SimpleFirst.class );
|
||||||
|
|
||||||
|
// Build Standard Service Registry
|
||||||
|
ssr = new StandardServiceRegistryBuilder(
|
||||||
|
new BootstrapServiceRegistryBuilder().build(),
|
||||||
|
cfg.getStandardServiceRegistryBuilder().getAggregatedCfgXml()
|
||||||
|
)
|
||||||
|
.applySettings( cfg.getProperties() )
|
||||||
|
.build();
|
||||||
|
|
||||||
|
SessionFactory sf = cfg.buildSessionFactory( ssr );
|
||||||
|
try {
|
||||||
|
Session session = sf.openSession();
|
||||||
|
try {
|
||||||
|
session.getTransaction().begin();
|
||||||
|
session.createNativeQuery( "DROP TABLE Simple" ).executeUpdate();
|
||||||
|
session.getTransaction().commit();
|
||||||
|
}
|
||||||
|
catch ( Throwable t ) {
|
||||||
|
if ( session.getTransaction().isActive() ) {
|
||||||
|
session.getTransaction().rollback();
|
||||||
|
}
|
||||||
|
throw t;
|
||||||
|
}
|
||||||
|
finally {
|
||||||
|
session.close();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
finally {
|
||||||
|
sf.close();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
finally {
|
||||||
|
StandardServiceRegistryBuilder.destroy( ssr );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testSqlAlterWithTableSchemaName() throws Exception {
|
||||||
|
StandardServiceRegistry ssr = null;
|
||||||
|
try {
|
||||||
|
final Configuration cfg = buildConfiguration( SimpleNext.class );
|
||||||
|
ssr = new StandardServiceRegistryBuilder(
|
||||||
|
new BootstrapServiceRegistryBuilder().build(),
|
||||||
|
cfg.getStandardServiceRegistryBuilder().getAggregatedCfgXml() )
|
||||||
|
.applySettings( cfg.getProperties() )
|
||||||
|
.build();
|
||||||
|
SessionFactory sf = cfg.buildSessionFactory( ssr );
|
||||||
|
try {
|
||||||
|
Session session = sf.openSession();
|
||||||
|
try {
|
||||||
|
session.getTransaction().begin();
|
||||||
|
session.createQuery( "FROM Simple", SimpleNext.class ).getResultList();
|
||||||
|
session.getTransaction().commit();
|
||||||
|
}
|
||||||
|
catch ( Throwable t ) {
|
||||||
|
if ( session.getTransaction().isActive() ) {
|
||||||
|
session.getTransaction().rollback();
|
||||||
|
}
|
||||||
|
throw t;
|
||||||
|
}
|
||||||
|
finally {
|
||||||
|
session.close();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
finally {
|
||||||
|
sf.close();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
finally {
|
||||||
|
StandardServiceRegistryBuilder.destroy( ssr );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static Configuration buildConfiguration(Class<?> clazz) {
|
||||||
|
Configuration cfg = new Configuration();
|
||||||
|
cfg.setProperty( AvailableSettings.HBM2DDL_AUTO, "update" );
|
||||||
|
cfg.setProperty( AvailableSettings.SHOW_SQL, "true" );
|
||||||
|
cfg.setProperty( AvailableSettings.FORMAT_SQL, "true" );
|
||||||
|
cfg.addAnnotatedClass( clazz );
|
||||||
|
return cfg;
|
||||||
|
}
|
||||||
|
|
||||||
|
@MappedSuperclass
|
||||||
|
public static abstract class AbstractSimple {
|
||||||
|
@Id
|
||||||
|
private Integer id;
|
||||||
|
private Integer value;
|
||||||
|
|
||||||
|
public Integer getId() {
|
||||||
|
return id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setId(Integer id) {
|
||||||
|
this.id = id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Integer getValue() {
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setValue(Integer value) {
|
||||||
|
this.value = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Entity(name = "Simple")
|
||||||
|
@Table(name = "Simple", schema = "test")
|
||||||
|
public static class SimpleFirst extends AbstractSimple {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Entity(name = "Simple")
|
||||||
|
@Table(name = "Simple", schema = "test")
|
||||||
|
public static class SimpleNext extends AbstractSimple {
|
||||||
|
private String data;
|
||||||
|
|
||||||
|
public String getData() {
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setData(String data) {
|
||||||
|
this.data = data;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue