HHH-12539 - Add test for issue
This commit is contained in:
parent
a93d6d9854
commit
118e7dc1f2
|
@ -0,0 +1,55 @@
|
|||
/*
|
||||
* 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.dynamicmap;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import org.hibernate.testing.TestForIssue;
|
||||
import org.hibernate.testing.junit4.BaseCoreFunctionalTestCase;
|
||||
import org.junit.Test;
|
||||
|
||||
import static org.hamcrest.core.Is.is;
|
||||
import static org.hamcrest.core.IsNull.notNullValue;
|
||||
import static org.hibernate.testing.transaction.TransactionUtil.doInHibernate;
|
||||
import static org.junit.Assert.assertThat;
|
||||
|
||||
@TestForIssue( jiraKey = "HHH-12539")
|
||||
public class DynamicMapTest extends BaseCoreFunctionalTestCase {
|
||||
@Override
|
||||
protected String[] getMappings() {
|
||||
return new String[] {
|
||||
"/dynamicmap/Test.hbm.xml"
|
||||
};
|
||||
}
|
||||
|
||||
@Test
|
||||
public void bootstrappingTest() {
|
||||
doInHibernate( this::sessionFactory, session -> {
|
||||
Map item1 = new HashMap();
|
||||
item1.put( "name", "cup" );
|
||||
item1.put( "description", "abc" );
|
||||
Map entity1 = new HashMap();
|
||||
entity1.put( "name", "first_entity" );
|
||||
item1.put( "entity", entity1 );
|
||||
session.save( "Entity1", entity1 );
|
||||
session.save( "Item1", item1 );
|
||||
} );
|
||||
|
||||
doInHibernate( this::sessionFactory, session -> {
|
||||
List result = session.createQuery( "from Item1" ).list();
|
||||
assertThat( result.size(), is( 1 ) );
|
||||
Map item1 = (Map) result.get( 0 );
|
||||
assertThat( item1.get( "name" ), is( "cup" ) );
|
||||
Object entity1 = item1.get( "entity" );
|
||||
assertThat( entity1, notNullValue() );
|
||||
assertThat( ( (Map) entity1 ).get( "name" ), is( "first_entity" ) );
|
||||
} );
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,58 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!--
|
||||
~ 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>.
|
||||
-->
|
||||
<hibernate-mapping xmlns="http://www.hibernate.org/xsd/hibernate-mapping"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://www.hibernate.org/xsd/hibernate-mapping
|
||||
http://www.hibernate.org/xsd/hibernate-mapping/hibernate-mapping-4.0.xsd">
|
||||
|
||||
<class entity-name="ItemBase" abstract="true">
|
||||
<tuplizer entity-mode="dynamic-map" class="org.hibernate.tuple.entity.DynamicMapEntityTuplizer"/>
|
||||
<id name="id" type="uuid-binary" column="id" length="16">
|
||||
<generator class="uuid2" />
|
||||
</id>
|
||||
<property name="name" type="nstring" column="name" length="50" not-null="true" />
|
||||
<property name="description" type="nstring" column="description" length="200" />
|
||||
</class>
|
||||
|
||||
<union-subclass entity-name="Item1" table="item_1" extends="ItemBase">
|
||||
<tuplizer entity-mode="dynamic-map" class="org.hibernate.tuple.entity.DynamicMapEntityTuplizer"/>
|
||||
<property name="prop1" type="int" column="prop1" />
|
||||
<many-to-one name="entity" entity-name="Entity1" column="entity_id" fetch="select"/>
|
||||
</union-subclass>
|
||||
|
||||
<union-subclass entity-name="Item2" table="item_2" extends="ItemBase">
|
||||
<tuplizer entity-mode="dynamic-map" class="org.hibernate.tuple.entity.DynamicMapEntityTuplizer"/>
|
||||
<property name="prop2" type="nstring" column="prop2" length="100" />
|
||||
<many-to-one name="entity" entity-name="Entity2" column="entity_id" fetch="select" not-null="true" />
|
||||
</union-subclass>
|
||||
|
||||
<class entity-name="Entity1" table="entity_1">
|
||||
<tuplizer entity-mode="dynamic-map" class="org.hibernate.tuple.entity.DynamicMapEntityTuplizer"/>
|
||||
<id name="id" type="uuid-binary" column="id" length="16">
|
||||
<generator class="uuid2" />
|
||||
</id>
|
||||
<property name="name" type="nstring" column="name" length="50" not-null="true" />
|
||||
<set name="items" fetch="select" lazy="true" inverse="true">
|
||||
<key column="entity_id" not-null="true" />
|
||||
<one-to-many entity-name="Item1"/>
|
||||
</set>
|
||||
</class>
|
||||
|
||||
<class entity-name="Entity2" table="entity_2">
|
||||
<tuplizer entity-mode="dynamic-map" class="org.hibernate.tuple.entity.DynamicMapEntityTuplizer"/>
|
||||
<id name="id" type="uuid-binary" column="id" length="16">
|
||||
<generator class="uuid2" />
|
||||
</id>
|
||||
<property name="name" type="nstring" column="name" length="50" not-null="true" />
|
||||
<set name="items" fetch="select" lazy="true" inverse="true">
|
||||
<key column="entity_id" not-null="true" />
|
||||
<one-to-many entity-name="Item2"/>
|
||||
</set>
|
||||
</class>
|
||||
|
||||
</hibernate-mapping>
|
Loading…
Reference in New Issue