HHH-10197 - Add test

This commit is contained in:
Andrea Boriero 2015-10-15 18:07:27 +01:00
parent 4bb263f789
commit add6fc84c8
4 changed files with 261 additions and 0 deletions

View File

@ -0,0 +1,63 @@
/*
* 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 java.io.Serializable;
import java.util.HashSet;
import java.util.Set;
/**
* @author Andrea Boriero
*/
public class Group implements Serializable {
private String org;
private String name;
private String description;
private Set users = new HashSet();
public Group(String name, String org) {
this.org = org;
this.name = name;
}
public Group() {
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getOrg() {
return org;
}
public void setOrg(String org) {
this.org = org;
}
public Set getUsers() {
return users;
}
public void setUsers(Set users) {
this.users = users;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
}

View File

@ -0,0 +1,95 @@
/*
* 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 org.hibernate.boot.MetadataSources;
import org.hibernate.boot.registry.StandardServiceRegistry;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
import org.hibernate.boot.spi.MetadataImplementor;
import org.hibernate.tool.hbm2ddl.SchemaExport;
import org.hibernate.tool.hbm2ddl.SchemaUpdate;
import org.hibernate.tool.hbm2ddl.Target;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.hibernate.testing.TestForIssue;
import org.hibernate.testing.junit4.BaseUnitTestCase;
/**
* @author Andrea Boriero
*/
@TestForIssue(jiraKey = "HHH-10197")
public class QuotedTableNameWithForeignKeysSchemaUpdateTest extends BaseUnitTestCase {
@Before
public void setUp() {
StandardServiceRegistry ssr = new StandardServiceRegistryBuilder().build();
try {
final MetadataImplementor metadata = (MetadataImplementor) new MetadataSources( ssr )
.addResource( "org/hibernate/test/schemaupdate/UserGroup.hbm.xml" )
.buildMetadata();
metadata.validate();
new SchemaUpdate( metadata ).execute( Target.EXPORT );
}
finally {
StandardServiceRegistryBuilder.destroy( ssr );
}
}
@Test
public void testUpdateExistingSchema() {
StandardServiceRegistry ssr = new StandardServiceRegistryBuilder().build();
try {
final MetadataImplementor metadata = (MetadataImplementor) new MetadataSources( ssr )
.addResource( "org/hibernate/test/schemaupdate/UserGroup.hbm.xml" )
.buildMetadata();
new SchemaUpdate( metadata ).execute( Target.EXPORT );
}
finally {
StandardServiceRegistryBuilder.destroy( ssr );
}
}
@Test
public void testGeneratingUpdateScript() {
StandardServiceRegistry ssr = new StandardServiceRegistryBuilder().build();
try {
final MetadataImplementor metadata = (MetadataImplementor) new MetadataSources( ssr )
.addResource( "org/hibernate/test/schemaupdate/UserGroup.hbm.xml" )
.buildMetadata();
new SchemaUpdate( metadata ).execute( true, false );
}
finally {
StandardServiceRegistryBuilder.destroy( ssr );
}
}
@After
public void tearDown() {
StandardServiceRegistry ssr = new StandardServiceRegistryBuilder().build();
try {
final MetadataImplementor metadata = (MetadataImplementor) new MetadataSources( ssr )
.addResource( "org/hibernate/test/schemaupdate/UserGroup.hbm.xml" )
.buildMetadata();
SchemaExport schemaExport = new SchemaExport( ssr, metadata );
schemaExport.drop( true, true );
}
finally {
StandardServiceRegistryBuilder.destroy( ssr );
}
}
}

View File

@ -0,0 +1,53 @@
/*
* 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 java.io.Serializable;
import java.util.HashSet;
import java.util.Set;
/**
* @author Andrea Boriero
*/
public class User implements Serializable {
private String org;
private String name;
private Set groups = new HashSet();
public User(String name, String org) {
this.org = org;
this.name = name;
}
public User() {
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getOrg() {
return org;
}
public void setOrg(String org) {
this.org = org;
}
public Set getGroups() {
return groups;
}
public void setGroups(Set groups) {
this.groups = groups;
}
}

View File

@ -0,0 +1,50 @@
<?xml version="1.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>.
-->
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping
package="org.hibernate.test.schemaupdate">
<class name="org.hibernate.test.schemaupdate.User" table="`User`">
<composite-id>
<key-property name="name"/>
<key-property name="org"/>
</composite-id>
<set name="groups" table="`UserGroup`">
<key>
<column name="userName"/>
<column name="org"/>
</key>
<many-to-many class="org.hibernate.test.schemaupdate.Group">
<column name="groupName"/>
<formula>org</formula>
</many-to-many>
</set>
</class>
<class name="org.hibernate.test.schemaupdate.Group" table="`Group`">
<composite-id>
<key-property name="name"/>
<key-property name="org"/>
</composite-id>
<property name="description"/>
<set name="users" table="`UserGroup`" inverse="true">
<key>
<column name="groupName"/>
<column name="org"/>
</key>
<many-to-many class="org.hibernate.test.schemaupdate.User">
<column name="userName"/>
<formula>org</formula>
</many-to-many>
</set>
</class>
</hibernate-mapping>