powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Вставка и извлечение из CLOB Oracle
5 сообщений из 5, страница 1 из 1
Вставка и извлечение из CLOB Oracle
    #38221038
Atum1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть server GFV3 в качестве провайдера использую EclipseLink (JPA 2.0)

В модели бина есть поле аннотированное

как MESSAGE_BODY у меня описано как

@Lob
@Column(name = "MESSAGE_BODY")
private byte[] messageBody;

в Оракле это поле мапится на поле CLOB
так вот при превышении сопредельного размера данных
возникает ошибка :

Caused by: Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.3.2.v20111125-r10461): org.eclipse.persistence.exceptions.DatabaseException
Internal Exception: java.sql.SQLException: ORA-01461: допускается привязка LONG значения только для занесения в столбец LONG

Подозреваю что ошибка возникает когда длинна превышает 4000 байт

на тестовой базе Derby 10 все работает отлично .


String body = request.getParameter("body");

int [] bbody = body.getBytes("UTF-8");

и так же через serializable .
...
Рейтинг: 0 / 0
Вставка и извлечение из CLOB Oracle
    #38221220
AndreyDmt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Atum1,

Точно не скажу - чисто на удачу. Я пользую строки для CLOB - вроде всё работает
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
	//
	private String objectGroupDescr;

	@Lob
	@Basic(fetch = FetchType.LAZY)
	@Column(name = "OBJECTGROUP_DESCR")
	public String getObjectGroupDescr() {
		return this.objectGroupDescr;
	}
...
Рейтинг: 0 / 0
Вставка и извлечение из CLOB Oracle
    #38221273
Atum1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На удачу сработало :)

это я Сам перемудрил , забыл что в Оракле CLOB - это String , в вот BLOB это уже byte []


но если у кого так работать не будет

то вот такой код должен подойти

проблема в том что , если размер body превышает 4000 байт (тип varchar) - то данные будут храниться отдельно .

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
    @Transient
    public Object getObjectDeserialized() throws IOException, ClassNotFoundException {
        if (this.body == null) {
            return new String(); // or another type
        }
        return SerializationHelper.deserialize(this.templateBody);
    }

    @Transient
    public void setObject(Object obj) throws IOException {
        if (obj != null) {
            this.body = SerializationHelper.serialize((Serializable) obj);
        }
    } 
...
Рейтинг: 0 / 0
Вставка и извлечение из CLOB Oracle
    #38222069
avp.mk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Както сразу насторожило что массив байт хранится в поле типа CharacterLargeObject..)
Может лучше поменять на BLOB?
...
Рейтинг: 0 / 0
Вставка и извлечение из CLOB Oracle
    #38222936
Atum1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
avp.mk,

Изначально тестировалось все через Derby - там поле было описано как byte[]
при переходе под oracle в таблицах поле описали как CLOB
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Вставка и извлечение из CLOB Oracle
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]