/* * 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.lob.hhh4635; import org.hibernate.Query; import org.hibernate.Session; import org.hibernate.dialect.Oracle8iDialect; import org.hibernate.testing.RequiresDialect; import org.hibernate.testing.TestForIssue; import org.hibernate.testing.junit4.BaseCoreFunctionalTestCase; import org.jboss.logging.Logger; import org.junit.Test; /** * To reproduce this issue, Oracle MUST use a multi-byte character set (UTF-8)! * * @author Brett Meyer */ @RequiresDialect( Oracle8iDialect.class ) @TestForIssue( jiraKey = "HHH-4635" ) public class LobTest extends BaseCoreFunctionalTestCase { private static final Logger LOG = Logger.getLogger( LobTest.class ); @Test public void hibernateTest() { printConfig(); Session session = openSession(); session.beginTransaction(); LobTestEntity entity = new LobTestEntity(); entity.setId(1L); entity.setLobValue(session.getLobHelper().createBlob(new byte[9999])); entity.setQwerty(randomString(4000)); session.save(entity); session.getTransaction().commit(); } @Override protected Class[] getAnnotatedClasses() { return new Class[] { LobTestEntity.class }; } private String randomString( int count ) { StringBuilder buffer = new StringBuilder(count); for( int i = 0; i < count; i++ ) { buffer.append( 'a' ); } return buffer.toString(); } private void printConfig() { String sql = "select value from V$NLS_PARAMETERS where parameter = 'NLS_CHARACTERSET'"; Session session = openSession(); session.beginTransaction(); Query query = session.createSQLQuery( sql ); String s = (String) query.uniqueResult(); LOG.debug( "Using Oracle charset " + s ); } }