HHH-9534 - Exception with custom EnumType and Map relation
This commit is contained in:
parent
3192e1db92
commit
7ccbd46932
|
@ -271,19 +271,12 @@ public class MapBinder extends CollectionBinder {
|
|||
//do not call setType as it extract the type from @Type
|
||||
//the algorithm generally does not apply for map key anyway
|
||||
elementBinder.setKey(true);
|
||||
MapKeyType mapKeyTypeAnnotation = property.getAnnotation( MapKeyType.class );
|
||||
if ( mapKeyTypeAnnotation != null
|
||||
&& !BinderHelper.isEmptyAnnotationValue( mapKeyTypeAnnotation.value() .type() ) ) {
|
||||
elementBinder.setExplicitType( mapKeyTypeAnnotation.value() );
|
||||
}
|
||||
else {
|
||||
elementBinder.setType(
|
||||
property,
|
||||
keyXClass,
|
||||
this.collection.getOwnerEntityName(),
|
||||
holder.keyElementAttributeConverterDefinition( keyXClass )
|
||||
);
|
||||
}
|
||||
elementBinder.setType(
|
||||
property,
|
||||
keyXClass,
|
||||
this.collection.getOwnerEntityName(),
|
||||
holder.keyElementAttributeConverterDefinition( keyXClass )
|
||||
);
|
||||
elementBinder.setPersistentClassName( propertyHolder.getEntityName() );
|
||||
elementBinder.setAccessType( accessType );
|
||||
mapValue.setIndex( elementBinder.make() );
|
||||
|
|
|
@ -21,6 +21,7 @@ import javax.persistence.TemporalType;
|
|||
import org.hibernate.AnnotationException;
|
||||
import org.hibernate.AssertionFailure;
|
||||
import org.hibernate.MappingException;
|
||||
import org.hibernate.annotations.MapKeyType;
|
||||
import org.hibernate.annotations.Nationalized;
|
||||
import org.hibernate.annotations.Parameter;
|
||||
import org.hibernate.annotations.Type;
|
||||
|
@ -147,7 +148,18 @@ public class SimpleValueBinder {
|
|||
isNationalized = property.isAnnotationPresent( Nationalized.class )
|
||||
|| buildingContext.getBuildingOptions().useNationalizedCharacterData();
|
||||
|
||||
Type annType = property.getAnnotation( Type.class );
|
||||
Type annType = null;
|
||||
if ( (!key && property.isAnnotationPresent( Type.class ))
|
||||
|| (key && property.isAnnotationPresent( MapKeyType.class )) ) {
|
||||
if ( key ) {
|
||||
MapKeyType ann = property.getAnnotation( MapKeyType.class );
|
||||
annType = ann.value();
|
||||
}
|
||||
else {
|
||||
annType = property.getAnnotation( Type.class );
|
||||
}
|
||||
}
|
||||
|
||||
if ( annType != null ) {
|
||||
setExplicitType( annType );
|
||||
type = explicitType;
|
||||
|
|
|
@ -19,46 +19,29 @@ import javax.persistence.Id;
|
|||
import javax.persistence.JoinColumn;
|
||||
import javax.persistence.JoinTable;
|
||||
|
||||
import org.hibernate.annotations.Formula;
|
||||
import org.hibernate.annotations.Type;
|
||||
import org.hibernate.annotations.TypeDef;
|
||||
import org.hibernate.annotations.TypeDefs;
|
||||
import org.hibernate.annotations.*;
|
||||
|
||||
import org.hibernate.test.annotations.enumerated.custom_types.LastNumberType;
|
||||
import org.hibernate.test.annotations.enumerated.enums.Common;
|
||||
import org.hibernate.test.annotations.enumerated.enums.FirstLetter;
|
||||
import org.hibernate.test.annotations.enumerated.enums.LastNumber;
|
||||
import org.hibernate.test.annotations.enumerated.enums.Trimmed;
|
||||
|
||||
/**
|
||||
* @author Janario Oliveira
|
||||
* @author Brett Meyer
|
||||
*/
|
||||
@Entity
|
||||
@TypeDefs({ @TypeDef(typeClass = LastNumberType.class, defaultForType = EntityEnum.LastNumber.class) })
|
||||
@TypeDefs({ @TypeDef(typeClass = LastNumberType.class, defaultForType = LastNumber.class) })
|
||||
public class EntityEnum {
|
||||
|
||||
enum Common {
|
||||
|
||||
A1, A2, B1, B2
|
||||
}
|
||||
|
||||
enum FirstLetter {
|
||||
|
||||
A_LETTER, B_LETTER, C_LETTER
|
||||
}
|
||||
|
||||
enum LastNumber {
|
||||
|
||||
NUMBER_1, NUMBER_2, NUMBER_3
|
||||
}
|
||||
|
||||
enum Trimmed {
|
||||
|
||||
A, B, C
|
||||
}
|
||||
|
||||
@Id
|
||||
@GeneratedValue
|
||||
private long id;
|
||||
private Common ordinal;
|
||||
@Enumerated(EnumType.STRING)
|
||||
private Common string;
|
||||
@Type(type = "org.hibernate.test.annotations.enumerated.FirstLetterType")
|
||||
@Type(type = "org.hibernate.test.annotations.enumerated.custom_types.FirstLetterType")
|
||||
private FirstLetter firstLetter;
|
||||
private LastNumber lastNumber;
|
||||
@Enumerated(EnumType.STRING)
|
||||
|
|
|
@ -22,15 +22,16 @@ import org.hibernate.mapping.PersistentClass;
|
|||
import org.hibernate.type.EnumType;
|
||||
import org.hibernate.type.Type;
|
||||
|
||||
import org.junit.Test;
|
||||
|
||||
import org.hibernate.testing.SkipForDialect;
|
||||
import org.hibernate.testing.TestForIssue;
|
||||
import org.hibernate.testing.junit4.BaseNonConfigCoreFunctionalTestCase;
|
||||
import org.hibernate.test.annotations.enumerated.EntityEnum.Common;
|
||||
import org.hibernate.test.annotations.enumerated.EntityEnum.FirstLetter;
|
||||
import org.hibernate.test.annotations.enumerated.EntityEnum.LastNumber;
|
||||
import org.hibernate.test.annotations.enumerated.EntityEnum.Trimmed;
|
||||
import org.hibernate.test.annotations.enumerated.custom_types.FirstLetterType;
|
||||
import org.hibernate.test.annotations.enumerated.custom_types.LastNumberType;
|
||||
import org.hibernate.test.annotations.enumerated.enums.Common;
|
||||
import org.hibernate.test.annotations.enumerated.enums.FirstLetter;
|
||||
import org.hibernate.test.annotations.enumerated.enums.LastNumber;
|
||||
import org.hibernate.test.annotations.enumerated.enums.Trimmed;
|
||||
import org.junit.Test;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
|
||||
|
|
|
@ -0,0 +1,51 @@
|
|||
/*
|
||||
* 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.enumerated.custom_mapkey;
|
||||
|
||||
import javax.persistence.ElementCollection;
|
||||
import javax.persistence.Entity;
|
||||
import javax.persistence.EnumType;
|
||||
import javax.persistence.GeneratedValue;
|
||||
import javax.persistence.Id;
|
||||
import javax.persistence.MapKeyEnumerated;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import org.hibernate.annotations.MapKeyType;
|
||||
import org.hibernate.annotations.Type;
|
||||
import org.hibernate.annotations.TypeDef;
|
||||
import org.hibernate.annotations.TypeDefs;
|
||||
|
||||
import org.hibernate.test.annotations.enumerated.custom_types.LastNumberType;
|
||||
import org.hibernate.test.annotations.enumerated.enums.Common;
|
||||
import org.hibernate.test.annotations.enumerated.enums.FirstLetter;
|
||||
import org.hibernate.test.annotations.enumerated.enums.LastNumber;
|
||||
|
||||
/**
|
||||
* @author Janario Oliveira
|
||||
*/
|
||||
@Entity
|
||||
@TypeDefs({@TypeDef(typeClass = LastNumberType.class, defaultForType = LastNumber.class)})
|
||||
public class EntityMapEnum {
|
||||
@Id
|
||||
@GeneratedValue
|
||||
int id;
|
||||
|
||||
@ElementCollection
|
||||
Map<Common, String> ordinalMap = new HashMap<Common, String>();
|
||||
@ElementCollection
|
||||
@MapKeyEnumerated(EnumType.STRING)
|
||||
Map<Common, String> stringMap = new HashMap<Common, String>();
|
||||
@ElementCollection
|
||||
@MapKeyType(@Type(type = "org.hibernate.test.annotations.enumerated.custom_types.FirstLetterType"))
|
||||
Map<FirstLetter, String> firstLetterMap = new HashMap<FirstLetter, String>();
|
||||
@ElementCollection
|
||||
Map<LastNumber, String> lastNumberMap = new HashMap<LastNumber, String>();
|
||||
@MapKeyEnumerated(EnumType.STRING)
|
||||
@ElementCollection
|
||||
Map<LastNumber, String> explicitOverridingImplicitMap = new HashMap<LastNumber, String>();
|
||||
}
|
|
@ -0,0 +1,317 @@
|
|||
/*
|
||||
* 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.enumerated.custom_mapkey;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
import org.hibernate.SQLQuery;
|
||||
import org.hibernate.Session;
|
||||
import org.hibernate.criterion.Restrictions;
|
||||
import org.hibernate.mapping.Map;
|
||||
import org.hibernate.mapping.PersistentClass;
|
||||
import org.hibernate.mapping.Property;
|
||||
import org.hibernate.mapping.Value;
|
||||
import org.hibernate.type.EnumType;
|
||||
import org.hibernate.type.Type;
|
||||
|
||||
import org.hibernate.testing.junit4.BaseNonConfigCoreFunctionalTestCase;
|
||||
import org.hibernate.test.annotations.enumerated.custom_types.FirstLetterType;
|
||||
import org.hibernate.test.annotations.enumerated.custom_types.LastNumberType;
|
||||
import org.hibernate.test.annotations.enumerated.enums.Common;
|
||||
import org.hibernate.test.annotations.enumerated.enums.FirstLetter;
|
||||
import org.hibernate.test.annotations.enumerated.enums.LastNumber;
|
||||
import org.junit.Test;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertFalse;
|
||||
import static org.junit.Assert.assertNotEquals;
|
||||
import static org.junit.Assert.assertNotNull;
|
||||
|
||||
/**
|
||||
* Test as in EnumeratedTypeTest but with MapKey
|
||||
*
|
||||
* @author Janario Oliveira
|
||||
*/
|
||||
public class MapKeyCustomEnumTypeTest extends BaseNonConfigCoreFunctionalTestCase {
|
||||
private Type getMapKeyType(Property prop) {
|
||||
Value value = prop.getValue();
|
||||
assertEquals( Map.class, value.getClass() );
|
||||
|
||||
Map map = (Map) value;
|
||||
return map.getIndex().getType();
|
||||
}
|
||||
|
||||
private void assetTypeDefinition(
|
||||
Property property,
|
||||
Class expectedReturnedClass, Class expectedType) {
|
||||
Type type = getMapKeyType( property );
|
||||
assertEquals( expectedReturnedClass, type.getReturnedClass() );
|
||||
assertEquals( expectedType.getName(), type.getName() );
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testTypeDefinition() {
|
||||
PersistentClass pc = metadata().getEntityBinding( EntityMapEnum.class.getName() );
|
||||
|
||||
// ordinal default of EnumType
|
||||
assetTypeDefinition( pc.getProperty( "ordinalMap" ), Common.class, EnumType.class );
|
||||
|
||||
// string defined by Enumerated(STRING)
|
||||
assetTypeDefinition( pc.getProperty( "stringMap" ), Common.class, EnumType.class );
|
||||
|
||||
// explicit defined by @Type
|
||||
assetTypeDefinition( pc.getProperty( "firstLetterMap" ), FirstLetter.class, FirstLetterType.class );
|
||||
|
||||
// implicit defined by @TypeDef in somewhere
|
||||
assetTypeDefinition( pc.getProperty( "lastNumberMap" ), LastNumber.class, LastNumberType.class );
|
||||
|
||||
// implicit defined by @TypeDef in anywhere, but overrided by Enumerated(STRING)
|
||||
assetTypeDefinition( pc.getProperty( "explicitOverridingImplicitMap" ), LastNumber.class, EnumType.class );
|
||||
}
|
||||
|
||||
private void assetEntityMapEnumEquals(EntityMapEnum expected, EntityMapEnum found) {
|
||||
assertEquals( expected.id, found.id );
|
||||
assertEquals( expected.ordinalMap, found.ordinalMap );
|
||||
assertEquals( expected.stringMap, found.stringMap );
|
||||
assertEquals( expected.firstLetterMap, found.firstLetterMap );
|
||||
assertEquals( expected.lastNumberMap, found.lastNumberMap );
|
||||
assertEquals( expected.explicitOverridingImplicitMap, found.explicitOverridingImplicitMap );
|
||||
}
|
||||
|
||||
private EntityMapEnum assertFindEntityMapEnum(
|
||||
EntityMapEnum expected,
|
||||
String query,
|
||||
String queryWithParam, Object param,
|
||||
String nativeQueryCheck) {
|
||||
|
||||
assertNotEquals( 0, expected.id );
|
||||
assertNotNull( param );
|
||||
|
||||
Session session = openNewSession();
|
||||
EntityMapEnum found = (EntityMapEnum) session.createQuery( query ).uniqueResult();
|
||||
|
||||
//find
|
||||
assetEntityMapEnumEquals( expected, found );
|
||||
|
||||
// find with parameter
|
||||
found = (EntityMapEnum) session.createQuery( queryWithParam )
|
||||
.setParameter( "param", param ).uniqueResult();
|
||||
assetEntityMapEnumEquals( expected, found );
|
||||
|
||||
//native query check
|
||||
SQLQuery sqlQuery = session.createSQLQuery( nativeQueryCheck );
|
||||
sqlQuery.setParameter( "idEntityMapEnum", expected.id );
|
||||
Object o = sqlQuery.uniqueResult();
|
||||
assertNotNull( o );
|
||||
|
||||
return found;
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testQuery() {
|
||||
// ordinal
|
||||
EntityMapEnum entityMapEnum = new EntityMapEnum();
|
||||
entityMapEnum.ordinalMap.put( Common.A2, "Common.A2" );
|
||||
Serializable id = save( entityMapEnum );
|
||||
|
||||
EntityMapEnum found = assertFindEntityMapEnum(
|
||||
entityMapEnum, "from EntityMapEnum ee where key(ee.ordinalMap)=1",
|
||||
"from EntityMapEnum ee where key(ee.ordinalMap)=:param", Common.A2,
|
||||
"select 1 from EntityMapEnum_ordinalMap where EntityMapEnum_id=:idEntityMapEnum and ordinalMap_KEY=1"
|
||||
);
|
||||
assertFalse( found.ordinalMap.isEmpty() );
|
||||
delete( id );
|
||||
|
||||
// **************
|
||||
// string
|
||||
entityMapEnum = new EntityMapEnum();
|
||||
entityMapEnum.stringMap.put( Common.B1, "Common.B2" );
|
||||
id = save( entityMapEnum );
|
||||
|
||||
found = assertFindEntityMapEnum(
|
||||
entityMapEnum,
|
||||
"from EntityMapEnum ee where key(ee.stringMap)='B1'",
|
||||
"from EntityMapEnum ee where key(ee.stringMap)=:param",
|
||||
Common.B1,
|
||||
"select 1 from EntityMapEnum_stringMap where EntityMapEnum_id=:idEntityMapEnum and stringMap_KEY='B1'"
|
||||
);
|
||||
assertFalse( found.stringMap.isEmpty() );
|
||||
delete( id );
|
||||
|
||||
// **************
|
||||
// custom local type (FirstLetterType)
|
||||
entityMapEnum = new EntityMapEnum();
|
||||
entityMapEnum.firstLetterMap.put( FirstLetter.C_LETTER, "FirstLetter.C_LETTER" );
|
||||
id = save( entityMapEnum );
|
||||
|
||||
found = assertFindEntityMapEnum(
|
||||
entityMapEnum,
|
||||
"from EntityMapEnum ee where key(ee.firstLetterMap)='C'",
|
||||
"from EntityMapEnum ee where key(ee.firstLetterMap)=:param",
|
||||
FirstLetter.C_LETTER,
|
||||
"select 1 from EntityMapEnum_firstLetterMap where EntityMapEnum_id=:idEntityMapEnum and firstLetterMap_KEY='C'"
|
||||
);
|
||||
assertFalse( found.firstLetterMap.isEmpty() );
|
||||
delete( id );
|
||||
|
||||
// **************
|
||||
// custom global type(LastNumberType)
|
||||
entityMapEnum = new EntityMapEnum();
|
||||
entityMapEnum.lastNumberMap.put( LastNumber.NUMBER_1, "LastNumber.NUMBER_1 " );
|
||||
id = save( entityMapEnum );
|
||||
|
||||
found = assertFindEntityMapEnum(
|
||||
entityMapEnum,
|
||||
"from EntityMapEnum ee where key(ee.lastNumberMap)='1'",
|
||||
"from EntityMapEnum ee where key(ee.lastNumberMap)=:param",
|
||||
LastNumber.NUMBER_1,
|
||||
"select 1 from EntityMapEnum_lastNumberMap where EntityMapEnum_id=:idEntityMapEnum and lastNumberMap_KEY='1'"
|
||||
);
|
||||
assertFalse( found.lastNumberMap.isEmpty() );
|
||||
delete( id );
|
||||
|
||||
// **************
|
||||
// override global type
|
||||
entityMapEnum = new EntityMapEnum();
|
||||
entityMapEnum.explicitOverridingImplicitMap.put(
|
||||
LastNumber.NUMBER_2, "LastNumber.NUMBER_2 "
|
||||
);
|
||||
id = save( entityMapEnum );
|
||||
|
||||
found = assertFindEntityMapEnum(
|
||||
entityMapEnum,
|
||||
"from EntityMapEnum ee where key(ee.explicitOverridingImplicitMap)='NUMBER_2'",
|
||||
"from EntityMapEnum ee where key(ee.explicitOverridingImplicitMap)=:param",
|
||||
LastNumber.NUMBER_2,
|
||||
"select 1 from EntityMapEnum_explicitOverridingImplicitMap where EntityMapEnum_id=:idEntityMapEnum and explicitOverridingImplicitMap_KEY='NUMBER_2'"
|
||||
);
|
||||
assertFalse( found.explicitOverridingImplicitMap.isEmpty() );
|
||||
delete( id );
|
||||
}
|
||||
|
||||
private EntityMapEnum assertFindCriteria(
|
||||
EntityMapEnum expected,
|
||||
String mapPath, Object param) {
|
||||
assertNotEquals( 0, expected.id );
|
||||
|
||||
Session session = openNewSession();
|
||||
session.beginTransaction();
|
||||
EntityMapEnum found = (EntityMapEnum) session.createCriteria( EntityMapEnum.class )
|
||||
.createCriteria( mapPath, "m" )
|
||||
.add( Restrictions.eq( "indices", param ) )
|
||||
.uniqueResult();
|
||||
//find
|
||||
assetEntityMapEnumEquals( expected, found );
|
||||
session.getTransaction().commit();
|
||||
session.close();
|
||||
return found;
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testCriteria() {
|
||||
// ordinal
|
||||
EntityMapEnum entityMapEnum = new EntityMapEnum();
|
||||
entityMapEnum.ordinalMap.put( Common.A1, "Common.A1" );
|
||||
Serializable id = save( entityMapEnum );
|
||||
|
||||
EntityMapEnum found = assertFindCriteria(
|
||||
entityMapEnum,
|
||||
"ordinalMap", Common.A1
|
||||
);
|
||||
assertFalse( found.ordinalMap.isEmpty() );
|
||||
delete( id );
|
||||
|
||||
// **************
|
||||
// string
|
||||
entityMapEnum = new EntityMapEnum();
|
||||
entityMapEnum.stringMap.put( Common.B2, "Common.B2" );
|
||||
id = save( entityMapEnum );
|
||||
|
||||
found = assertFindCriteria(
|
||||
entityMapEnum,
|
||||
"stringMap", Common.B2
|
||||
);
|
||||
assertFalse( found.stringMap.isEmpty() );
|
||||
delete( id );
|
||||
|
||||
// **************
|
||||
// custom local type (FirstLetterType)
|
||||
entityMapEnum = new EntityMapEnum();
|
||||
entityMapEnum.firstLetterMap.put( FirstLetter.A_LETTER, "FirstLetter.A_LETTER" );
|
||||
id = save( entityMapEnum );
|
||||
|
||||
found = assertFindCriteria(
|
||||
entityMapEnum,
|
||||
"firstLetterMap", FirstLetter.A_LETTER
|
||||
);
|
||||
assertFalse( found.firstLetterMap.isEmpty() );
|
||||
delete( id );
|
||||
|
||||
// **************
|
||||
// custom global type(LastNumberType)
|
||||
entityMapEnum = new EntityMapEnum();
|
||||
entityMapEnum.lastNumberMap.put( LastNumber.NUMBER_3, "LastNumber.NUMBER_3" );
|
||||
id = save( entityMapEnum );
|
||||
|
||||
found = assertFindCriteria(
|
||||
entityMapEnum,
|
||||
"lastNumberMap", LastNumber.NUMBER_3
|
||||
);
|
||||
assertFalse( found.lastNumberMap.isEmpty() );
|
||||
delete( id );
|
||||
|
||||
// **************
|
||||
// override global type
|
||||
entityMapEnum = new EntityMapEnum();
|
||||
entityMapEnum.explicitOverridingImplicitMap.put(
|
||||
LastNumber.NUMBER_2, "LastNumber.NUMBER_2 "
|
||||
);
|
||||
id = save( entityMapEnum );
|
||||
|
||||
found = assertFindCriteria(
|
||||
entityMapEnum,
|
||||
"explicitOverridingImplicitMap", LastNumber.NUMBER_2
|
||||
);
|
||||
assertFalse( found.explicitOverridingImplicitMap.isEmpty() );
|
||||
delete( id );
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Class[] getAnnotatedClasses() {
|
||||
return new Class[] {EntityMapEnum.class};
|
||||
}
|
||||
|
||||
private Session openNewSession() {
|
||||
if ( getSession() != null && getSession().isOpen() ) {
|
||||
getSession().close();
|
||||
}
|
||||
return openSession();
|
||||
}
|
||||
|
||||
private Serializable save(Object o) {
|
||||
Session session = openNewSession();
|
||||
session.getTransaction().begin();
|
||||
|
||||
Serializable id = session.save( o );
|
||||
|
||||
session.getTransaction().commit();
|
||||
session.close();
|
||||
|
||||
return id;
|
||||
}
|
||||
|
||||
private void delete(Serializable id) {
|
||||
Session session = openNewSession();
|
||||
session.getTransaction().begin();
|
||||
|
||||
Object o = session.get( EntityMapEnum.class, id );
|
||||
session.delete( o );
|
||||
|
||||
session.getTransaction().commit();
|
||||
session.close();
|
||||
}
|
||||
}
|
|
@ -4,7 +4,7 @@
|
|||
* 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.enumerated;
|
||||
package org.hibernate.test.annotations.enumerated.custom_types;
|
||||
|
||||
import java.sql.PreparedStatement;
|
||||
import java.sql.ResultSet;
|
|
@ -4,7 +4,7 @@
|
|||
* 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.enumerated;
|
||||
package org.hibernate.test.annotations.enumerated.custom_types;
|
||||
|
||||
import java.sql.PreparedStatement;
|
||||
import java.sql.ResultSet;
|
|
@ -0,0 +1,15 @@
|
|||
/*
|
||||
* 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.enumerated.enums;
|
||||
|
||||
/**
|
||||
* @author Janario Oliveira
|
||||
* @author Brett Meyer
|
||||
*/
|
||||
public enum Common {
|
||||
A1, A2, B1, B2
|
||||
}
|
|
@ -0,0 +1,15 @@
|
|||
/*
|
||||
* 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.enumerated.enums;
|
||||
|
||||
/**
|
||||
* @author Janario Oliveira
|
||||
* @author Brett Meyer
|
||||
*/
|
||||
public enum FirstLetter {
|
||||
A_LETTER, B_LETTER, C_LETTER
|
||||
}
|
|
@ -0,0 +1,15 @@
|
|||
/*
|
||||
* 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.enumerated.enums;
|
||||
|
||||
/**
|
||||
* @author Janario Oliveira
|
||||
* @author Brett Meyer
|
||||
*/
|
||||
public enum LastNumber {
|
||||
NUMBER_1, NUMBER_2, NUMBER_3
|
||||
}
|
|
@ -0,0 +1,15 @@
|
|||
/*
|
||||
* 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.enumerated.enums;
|
||||
|
||||
/**
|
||||
* @author Janario Oliveira
|
||||
* @author Brett Meyer
|
||||
*/
|
||||
public enum Trimmed {
|
||||
A, B, C
|
||||
}
|
Loading…
Reference in New Issue