возникла следующая проблема:Как создать загрузку файла в grails, который работает с oracle?
Я попытался создать функциональность загрузки файла simpel в grails. Я только что создал класс домена с
byte[] rawFile
как собственность. Для меня Грейлс оставил для меня все остальное. Он отлично работал для стандартного hsqldb в среде dev.
Затем я развернул его на сервере с установленным оракулом db (тонким драйвером). Все, кроме загрузки файлов, отлично работает с oracle db. Для загрузки файла, я получаю (насколько я помню)
SQLException: ORA-01461: может связать LONG значение только для вставки в LONG
Я попробовал несколько способов исправить он (включая некоторые сопоставления столбцов с блобами и использование java.sql.blob вместо байта []), но ничего действительно не сработало, и я пошел в направлении, где мой код больше не будет db.
Google на самом деле не помог мне, и мои книги с граалями тоже не помогают.
Сохранение файла на диск не является хорошим решением в моем мнении.
Так вот мой вопрос:
как создать загрузку файлов в Grails, который работает с оракулом?
Обновление: дополнительная информация. Управляется воспроизведением проблемы с XE-версией Oracle:
Hibernate создает столбец VARBINARY (255) для rawFile. Поэтому я попытался загрузить файл размером 4 байта, и он сработал.
Затем я изменил тип столбца вручную на «blob», и он работал с большими файлами.
Затем я добавил
static mapping = {
columns {
rawFile type:'blob'
}
}
в мой класс домена и он перестал работать:
ОШИБКА errors.GrailsExceptionResolver - [B не может быть приведен к java.sql.Blob java.lang. ClassCastException: [в не может быть приведен к java.sql.Blob
:-(
Отлично! Кажется, это сделал трюк! – rdmueller
Так что это не решение! У меня такая проблема, и если я не устанавливаю тип поля в blob, в базе данных oracle тип поля устанавливается как LONG. Интересно, как этот ответ можно считать правильным и хорошим решением. :) – emilan