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