3

我正在尝试运行导入的开源,但运行后出现此错误:

The method nullSafeSet(PreparedStatement, Object, int, SessionImplementor) of type        
BlobUserType must override or implement a supertype method

这是我没有在上面放任何东西的方法,因为我真的不需要它,但我必须坚持它。

      @Override
protected void nullSafeSet(PreparedStatement ps, Object value , int index ,      
    SessionImplementor si) throws SQLException{}

这是课程代码:

   package org.squashtest.csp.tm.internal.infrastructure.hibernate;

   import java.io.IOException;
   import java.io.InputStream;
   import java.sql.PreparedStatement;
   import java.sql.ResultSet;
   import java.sql.SQLException;
   import java.sql.Types;

   import org.hibernate.HibernateException;
   import org.springframework.jdbc.support.lob.LobCreator;
   import org.springframework.jdbc.support.lob.LobHandler;
   import org.springframework.orm.hibernate3.support.AbstractLobType;
   import org.hibernate.engine.SessionImplementor;
   public class BlobUserType extends AbstractLobType {

@Override
public int[] sqlTypes() {
    return new int[] {Types.BLOB};
}

@Override
public Class<?> returnedClass() {
    return InputStream.class;
}

@Override
protected Object nullSafeGetInternal(ResultSet rs, String[] names,
        Object owner, LobHandler lobHandler) throws SQLException,
        IOException, HibernateException {
       return lobHandler.getBlobAsBinaryStream(rs, names[0]);

}

@Override
protected void nullSafeSetInternal(PreparedStatement ps, int index, Object   
    value, LobCreator lobCreator) throws SQLException,
        IOException, HibernateException {


      if (value != null) {
          lobCreator.setBlobAsBinaryStream(ps, index, (InputStream) value, 
         -1);


     }
      else {
            lobCreator.setBlobAsBytes(ps, index, null);
      }


}




   }
4

1 回答 1

3

此方法是针对与您使用的不同版本的 Hibernate 编写的。如您所见,例如Hibernate 3.5中的 UserType 确实具有以下内容:

void nullSafeSet(PreparedStatement st,
                 Object value,
                 int index) throws HibernateException, SQLException

另一方面,Hibernate 4.1确实有这样一个 UserType 类,其中方法签名与您的方法匹配:

void nullSafeSet(PreparedStatement st,
                 Object value,
                 int index,
                 SessionImplementor session)
                 throws HibernateException, SQLException
于 2012-07-18T10:29:05.087 回答