hibernate не может быть приведен к oracle.sql.BLOB - PullRequest
0 голосов
/ 02 ноября 2018

Я использую JBoss 7, jdk 1.7u191, hibernate 3.6.

У меня есть раздел кода, в котором пользователи пытаются прикрепить файл к электронному письму, вложение помещается в большой двоичный объект, и взрывающаяся часть выглядит следующим образом.

public void setFileBlob(Blob fileBlob) {
    Blob tmpBlob = fileBlob;
    this.fileBlob = (BLOB)tmpBlob;        
}

java.lang.ClassCastException: com.sun.proxy. $ Proxy369 нельзя преобразовать в oracle.sql.BLOB

Строка, которая выдает эту ошибку, представляет собой BLOB-объект this.fileBlob = .... Это от импорта выше java.sql.Blob, а BLOB - oracle.sql.BLOB.

Так что я ищу предложения, которые помогут решить эту проблему, потому что это похоже на странную проблему загрузчика классов. Немного важного фона.

  1. Я на 100% уверен, что в пути к классам нет лишних файлов ojdbc * .jar. Есть только 1.
  2. Под JBoss 6 этот код работал отлично. Тот же код не работает в JBoss 7.
  3. Это для приложения с балансировкой нагрузки, поэтому у меня есть несколько JBoss со 100% одинаковым кодом / установками (наша установка и java все выполняются через менеджер пакетов). У меня 2 из 8 JBoss, которые терпят неудачу с этой ошибкой. Кажется, что другие 6 работают, я мог войти напрямую в один JBoss, и он работал бы неоднократно, а в другом он бы не работал.
  4. Я сделал архив, который работал, скопировал его на тестовый сервер и сравнил с тем, который не работает. Они одинаковые. На самом деле архив, который я сделал из рабочего, я запустил, и он не работал на другом сервере.
  5. Я также для полноты сравнил установки java и пакеты, установленные в каждой системе, все идентичны.

Таким образом, я склоняюсь к проблеме загрузчика классов, где, основываясь на том, что было загружено, в каком порядке при запуске Jboss будет диктоваться, работает он или нет. Но у меня заканчиваются идеи о том, что проверять, и я буду очень признателен за предложения. спасибо - Карл

...