Caused by: java.sql.SQLException: Io 异常: End of TNS data channel at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:134) at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:179) at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:333) at oracle.jdbc.driver.OracleConnection.rollback(OracleConnection.java:1380) at net.sf.hibernate.transaction.JDBCTransaction.rollback(JDBCTransaction.java:86)
请教这个是什么错误啊?该怎么解决?

解决方案 »

  1.   

    分别试一下以下各方法:1.把thin连接换成oci连接试一下看2.找最新的oracle 10g的jdbc驱动试一下看3.在hibernate的配置文件里加上 <property name="hibernate.jdbc.batch_size">0</property>试试看4.
    加入这个类:ClobType.java
    ----------------------------
    import java.sql.Clob;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Types;
    import java.io.StringReader;import net.sf.hibernate.HibernateException;
    import net.sf.hibernate.type.ImmutableType;
    import org.apache.commons.lang.ObjectUtils;public class ClobType extends ImmutableType {
        public Object get(ResultSet rs, String name)
                throws HibernateException, SQLException {
            Clob clob = rs.getClob(name);
            if(clob!=null){
              return clob.getSubString(1, (int) clob.length());
            }else{
              return "";
            }
        }    public void set(PreparedStatement st, Object value, int index)
                throws SQLException {
            StringReader r = new StringReader((String) value);
            st.setCharacterStream(index, r, ((String) value).length());
        }    public int sqlType() {
            return Types.CLOB;
        }    public String getName() {
            return "string";
        }    public boolean hasNiceEquals() {
            return false;
        }    public boolean equals(Object x, Object y) {
            return ObjectUtils.equals(x, y);
        }    public String toXML(Object value) {
            return (String) value;
        }    public Class getReturnedClass() {
            return Clob.class;
        }    public Object fromStringValue(String xml) {
            throw new UnsupportedOperationException();
        }    public String toString(Object value) {
            return value.toString();
        }    public Object nullSafeGet(ResultSet rs, String[] names, Object owner)throws HibernateException, SQLException {
            Clob clob = rs.getClob(names[0]);
            return (clob == null ? null : clob.getSubString(1, (int) clob.length()));
        }}然后在hibernate-mapping文件里对clob的字段按下面的方式定义:
    <property name="content" type="刚才加入的类的包名.ClobType"  />