将二进制二进制文件插入DB

时间:2018-03-27 17:47:26

标签: java hibernate

我想为Hibernate重写这个SQL查询:

SQL:

javax.servlet.http.Part file;

                ps = conn.prepareStatement("INSERT INTO KNOWLEDGEBASE_FILES (ID, KNOWLEDGEBASE_ID, FILE_NAME, FILE) "
                    + " VALUES (?, ?, ?, ?)");
                ps.setInt(1, obj.number);
                ps.setInt(2, obj.number);
                ps.setString(3, file.getSubmittedFileName());

                InputStream inputStream = file.getInputStream();
                ps.setBinaryStream(4, inputStream, inputStream.available());

                ps.executeUpdate();

休眠:

try {
            session.getTransaction().begin();

            Part file = null;

            InputStream inputStream = file.getInputStream();

            session.createNativeQuery("INSERT INTO KNOWLEDGEBASE_FILES (ID, KNOWLEDGEBASE_ID, FILE_NAME, FILE) VALUES (?, ?, ?, ?)")
            .setParameter(1, "test")    
            .setParameter(2, "test")    
            .setParameter(3, "test")    
            .setBinaryStream(4, inputStream, inputStream.available());
            .executeUpdate();

            session.getTransaction().commit();
        } catch (Exception e) {
            e.printStackTrace();
            session.getTransaction().rollback();
            throw new Exception("Error");
        }

我收到错误,找不到方法setBinaryStream。你知道重写代码的正确方法是什么吗?

1 个答案:

答案 0 :(得分:0)

您可以使用以下任何选项

  1. 使用query2.setBinary(4,); (这是描述方法)
  2. 使用setParameter(4,inputStream)或setParameter(4,inputStream,Type)