Hibernate-аналог для jdb c Statement.setBinaryStream - PullRequest
1 голос
/ 21 февраля 2020

У меня был фрагмент jdb c, который я хочу преобразовать, используя собственный запрос в спящем режиме.

Проблема: Это мой jdb c Код:

{
   statement = conn.prepareStatement("INSERT INTO CCM_JIGSAW_FILES (FILE_ID,FILE_FOR,FILE_CONTENT) 
                    VALUES (?,?,?)");
   ByteArrayInputStream in = new ByteArrayInputStream(fileContent);//fileContent is byte[]
   statement.setString(1, file_id);
   statement.setString(2, licenseType);
   statement.setBinaryStream(3,in,fileContent.length);
   statement.executeUpdate();
}

Решение опробовано : Пробовал в спящем режиме, но не мог не повезти

{
   String insertSqlQuery = "INSERT INTO CCM_JIGSAW_FILES (FILE_ID,FILE_FOR,FILE_CONTENT) VALUES (?,?,?)";
   inputStream = new ByteArrayInputStream(fileContent);

   Query insertQuery = entityManager.createNativeQuery(insertSqlQuery);
   insertQuery.setParameter(1, fileId);
   insertQuery.setParameter(2, licenseType);
   insertQuery.setParameter(3, inputStream);// Here i am getting runtime exception.
   insertQuery.executeUpdate();
}
org.hibernate.HibernateException: Could not determine a type for
class: java.io.ByteArrayInputStream

Как я могу преобразовать statement.setBinaryStream(3,in,fileContent.length) в спящий режим? Примечание: тип данных FILE_CONTENT в базе данных Blob

1 Ответ

0 голосов
/ 21 февраля 2020

Предполагая, что у вас есть класс POJO для таблицы CCM_JIGSAW_FILES и тип данных File_Content в вашем классе POJO должен быть byte[].

Вы можете напрямую сохранить байт [] в File_Content, используя метод установки.

PojoObject.setterMethod(fileContent);

См. Этот пример

...