Migrating from ojdbc14.jar to ojdbc6.jar is not, as one might think, completely seamless. Here are at least 3 points which required code change:

Changes in class hierarchy

error: OracleTypes is not public in oracle.jdbc.driver; cannot be accessed from outside package
 <span class="error">[javac]</span> private static Integer OracleRefCursorType = new Integer(oracle.jdbc.driver.OracleTypes.CURSOR);

Behaviour is also not the same:

java.sql.SQLException: Could not commit with auto-commit set on
	at oracle.jdbc.driver.PhysicalConnection.commit(PhysicalConnection.java:2356)
	at oracle.jdbc.driver.PhysicalConnection.commit(PhysicalConnection.java:2403)
	at org.apache.tomcat.dbcp.dbcp.DelegatingConnection.commit(DelegatingConnection.java:334)
	at org.apache.tomcat.dbcp.dbcp.PoolingDataSource$PoolGuardConnectionWrapper.commit(PoolingDataSource.java:211)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:606)
	at net.bull.javamelody.JdbcWrapper$ConnectionInvocationHandler.invoke(JdbcWrapper.java:178)
	at net.bull.javamelody.JdbcWrapper$DelegatingInvocationHandler.invoke(JdbcWrapper.java:271)
	at com.sun.proxy.$Proxy7.commit(Unknown Source)

See http://stackoverflow.com/questions/23953534/java-sql-sqlexception-could-not-commit-with-auto-commit-set-on-at-oracle-jdbc-d

NVARCHAR2 problems

org.hibernate.MappingException: No Dialect mapping for JDBC type: -9
 at org.hibernate.dialect.TypeNames.get(TypeNames.java:79)
 at org.hibernate.dialect.TypeNames.get(TypeNames.java:104)
 at org.hibernate.dialect.Dialect.getHibernateTypeName(Dialect.java:426)
 at org.hibernate.loader.custom.CustomLoader$Metadata.getHibernateType(CustomLoader.java:590)
 at org.hibernate.loader.custom.CustomLoader$ScalarResultColumnProcessor.performDiscovery(CustomLoader.java:516)
 at org.hibernate.loader.custom.CustomLoader.autoDiscoverTypes(CustomLoader.java:532)
 at org.hibernate.loader.Loader.getResultSet(Loader.java:1878)
 at org.hibernate.loader.Loader.doQuery(Loader.java:718)
 at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:270)
 at org.hibernate.loader.Loader.doList(Loader.java:2449)
 at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2192)

This appears when using SQL queries with hibernate when result includes NVARCHAR2 columns. Solution is to create a new Dialect which extends Oracle10gDialect which registers the NVARCHAR2 type.

<pre lang="java">
import java.sql.Types;

import org.hibernate.Hibernate;
import org.hibernate.dialect.Oracle10gDialect;

public class XOracleDialect extends Oracle10gDialect {
	
	public XOracleDialect(){
		super();
		registerHibernateType(Types.NVARCHAR, Hibernate.STRING.getName());
	}
}

See: http://stackoverflow.com/questions/27039300/jpa-sql-server-no-dialect-mapping-for-jdbc-type-9