/* * 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.nationalized; import java.sql.NClob; import javax.persistence.Entity; import javax.persistence.Id; import javax.persistence.Lob; import org.hibernate.annotations.Nationalized; import org.hibernate.annotations.Type; import org.hibernate.boot.Metadata; import org.hibernate.boot.MetadataSources; import org.hibernate.boot.registry.StandardServiceRegistry; import org.hibernate.boot.registry.StandardServiceRegistryBuilder; import org.hibernate.dialect.PostgreSQL81Dialect; import org.hibernate.mapping.PersistentClass; import org.hibernate.mapping.Property; import org.hibernate.type.CharacterArrayType; import org.hibernate.type.CharacterNCharType; import org.hibernate.type.CharacterType; import org.hibernate.type.MaterializedClobType; import org.hibernate.type.MaterializedNClobType; import org.hibernate.type.NClobType; import org.hibernate.type.NTextType; import org.hibernate.type.StringNVarcharType; import org.hibernate.type.StringType; import org.hibernate.testing.junit4.BaseUnitTestCase; import org.junit.Test; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertSame; /** * @author Steve Ebersole */ public class SimpleNationalizedTest extends BaseUnitTestCase { @SuppressWarnings({"UnusedDeclaration", "SpellCheckingInspection"}) @Entity( name="NationalizedEntity") public static class NationalizedEntity { @Id private Integer id; @Nationalized private String nvarcharAtt; @Lob @Nationalized private String materializedNclobAtt; @Lob @Nationalized private NClob nclobAtt; @Nationalized private Character ncharacterAtt; @Nationalized private Character[] ncharArrAtt; @Type(type = "ntext") private String nlongvarcharcharAtt; } @Test public void simpleNationalizedTest() { final StandardServiceRegistry ssr = new StandardServiceRegistryBuilder().build(); try { final MetadataSources ms = new MetadataSources( ssr ); ms.addAnnotatedClass( NationalizedEntity.class ); final Metadata metadata = ms.buildMetadata(); PersistentClass pc = metadata.getEntityBinding( NationalizedEntity.class.getName() ); assertNotNull( pc ); Property prop = pc.getProperty( "nvarcharAtt" ); if(metadata.getDatabase().getDialect() instanceof PostgreSQL81Dialect ){ // See issue HHH-10693 assertSame( StringType.INSTANCE, prop.getType() ); }else{ assertSame( StringNVarcharType.INSTANCE, prop.getType() ); } prop = pc.getProperty( "materializedNclobAtt" ); if(metadata.getDatabase().getDialect() instanceof PostgreSQL81Dialect ){ // See issue HHH-10693 assertSame( MaterializedClobType.INSTANCE, prop.getType() ); }else { assertSame( MaterializedNClobType.INSTANCE, prop.getType() ); } prop = pc.getProperty( "nclobAtt" ); assertSame( NClobType.INSTANCE, prop.getType() ); prop = pc.getProperty( "nlongvarcharcharAtt" ); assertSame( NTextType.INSTANCE, prop.getType() ); prop = pc.getProperty( "ncharArrAtt" ); if(metadata.getDatabase().getDialect() instanceof PostgreSQL81Dialect ){ // See issue HHH-10693 assertSame( CharacterArrayType.INSTANCE, prop.getType() ); }else { assertSame( StringNVarcharType.INSTANCE, prop.getType() ); } prop = pc.getProperty( "ncharacterAtt" ); if ( metadata.getDatabase().getDialect() instanceof PostgreSQL81Dialect ) { // See issue HHH-10693 assertSame( CharacterType.INSTANCE, prop.getType() ); } else { assertSame( CharacterNCharType.INSTANCE, prop.getType() ); } } finally { StandardServiceRegistryBuilder.destroy( ssr ); } } }