powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Почему не работает Update
15 сообщений из 15, страница 1 из 1
Почему не работает Update
    #34561056
Quessir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Говорит
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Caused by:  cannot define positional parameter after any named parameters have been defined
	at org.hibernate.hql.ast.HqlSqlWalker.generatePositionalParameter(HqlSqlWalker.java: 764 )
	at org.hibernate.hql.antlr.HqlSqlBaseWalker.parameter(HqlSqlBaseWalker.java: 4570 )
	at org.hibernate.hql.antlr.HqlSqlBaseWalker.expr(HqlSqlBaseWalker.java: 1294 )
	at org.hibernate.hql.antlr.HqlSqlBaseWalker.exprOrSubquery(HqlSqlBaseWalker.java: 4032 )
	at org.hibernate.hql.antlr.HqlSqlBaseWalker.comparisonExpr(HqlSqlBaseWalker.java: 3521 )
	at org.hibernate.hql.antlr.HqlSqlBaseWalker.logicalExpr(HqlSqlBaseWalker.java: 1758 )
	at org.hibernate.hql.antlr.HqlSqlBaseWalker.whereClause(HqlSqlBaseWalker.java: 776 )
	at org.hibernate.hql.antlr.HqlSqlBaseWalker.updateStatement(HqlSqlBaseWalker.java: 358 )
	at org.hibernate.hql.antlr.HqlSqlBaseWalker.statement(HqlSqlBaseWalker.java: 237 )
	at org.hibernate.hql.ast.QueryTranslatorImpl.analyze(QueryTranslatorImpl.java: 218 )

Вот код

Код: plaintext
1.
2.
3.
4.
5.
updated = session.createQuery("UPDATE Cathegory cat "+
							  "SET cat.cathegory= :newCat "+
							  "WHERE cat.id = ?").
							  	setString("newCat",Cat).
							  	setInteger(  0 , id).executeUpdate();
...
Рейтинг: 0 / 0
Почему не работает Update
    #34561096
Quessir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И еще перед этим сказал

Код: plaintext
right-hand operand of a binary operator was  null 
...
Рейтинг: 0 / 0
Почему не работает Update
    #34561418
Quessir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Проблему тупо решил так:
Код: plaintext
1.
2.
3.
updated = session.createQuery("UPDATE Cathegory cat "+
					   "SET cat.cathegory= :newCat "+
					   "WHERE cat.id = ' "+id+" ' ").
					  	setString("newCat",Cat).executeUpdate();

Но, теперь возникла другая проблема. Я отображаю их в Table(SWT). И после update, заново беру данные из замапенного класса, и заново заполняю таблицу. Но у меня не обновляются данные. Смотрел в самой таблице бд, все нормально, он их апдейтит. Возможно, в Hibernate стоит кэш. Или он берет данные из базы заново.
...
Рейтинг: 0 / 0
Почему не работает Update
    #34561600
vas0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
первый раз такое вижу, вообще в hibernate делают примерно так:
Код: plaintext
1.
2.
    Category category = //... получаешь где-то там объект
    session.update(category); // ну или session.saveOrUpdate(category);

а иначе чем это все отличаеться от старого доброго JDBC?
...
Рейтинг: 0 / 0
Почему не работает Update
    #34561627
Nevolin Alexandr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А разве Hibernate не позволяет работать непосредственно с объектом Cathegory?
зачем нужен этот Query? может можно cat.setCathegory(...)
А ошибка наверное в том что вы использете и именованные параметры и определяемые по индексу.
Попробуйте что-нибудь одно.
...
Рейтинг: 0 / 0
Почему не работает Update
    #34561650
Angel13
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Quessir Но, теперь возникла другая проблема. Я отображаю их в Table(SWT). И после update, заново беру данные из замапенного класса, и заново заполняю таблицу. Но у меня не обновляются данные. Смотрел в самой таблице бд, все нормально, он их апдейтит. Возможно, в Hibernate стоит кэш. Или он берет данные из базы заново.

У меня таже проблема. Есть два Entity которые используют одну таблицу в рамках одной сессии. После того как одно из них начинает транзакцию, меняет поля в таблице, и успешно коммитит изменения. Вторая Entity напрочь не видит этих изменений. Такое ощущение что Hibernate не перечитывает содержимое БД. Кто-то сталкивался?
...
Рейтинг: 0 / 0
Почему не работает Update
    #34561691
Angel13
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сам спросил, сам ответил :)

session.evict()
...
Рейтинг: 0 / 0
Почему не работает Update
    #34561818
Quessir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А как пользоваться этим evict()?
...
Рейтинг: 0 / 0
Почему не работает Update
    #34562002
Angel13
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Передаешь ему внутрь объект, который ты хочешь удалить из кэша.
После чего перечитываешь объект _гарантировано_ из БД.

Если много объектов, то можно вызвать session.clear(). Он чистит кэш полностью.
...
Рейтинг: 0 / 0
Почему не работает Update
    #34562022
Quessir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Понятно. Теперь у меня вот какая проблема. Когда я делаю апдейт. У меня данные в тэйбле обновляются. Но, у них порядок ненормальной. Т.е. первые ячейки почему-то оказываются в самом низу и наоборот. У вас не возникало таких проблем?
...
Рейтинг: 0 / 0
Почему не работает Update
    #34562033
expp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а порядок записей кто-то определял? или о чём речь?
...
Рейтинг: 0 / 0
Почему не работает Update
    #34562231
Quessir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Речь о том, что возможно хибер сортирует его не по id? Я вообще не пойму по какому порядку он мне выводит все записи. Вначеле все правильно. Выводит как есть в таблице. А потом когда я апдейтю что-то и обновляю данные в таблице, порядок меняется.
...
Рейтинг: 0 / 0
Почему не работает Update
    #34562254
expp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
повторюсь-ка, как правило в реляционных системах надеятся на порядок записей по умолчанию несколько наивно (хотя мне всегда везло).
Вы уверены, что сама база не начинает отдавать их в другом порядке? на getResultList() хибер выпуливает объедки в порядке resultset-а, ничего не меняя.
Как вариант, они могут перемешиваться если их класть в HashSet ....
...
Рейтинг: 0 / 0
Почему не работает Update
    #34562260
Angel13
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Quessir Речь о том, что возможно хибер сортирует его не по id? Я вообще не пойму по какому порядку он мне выводит все записи. Вначеле все правильно. Выводит как есть в таблице. А потом когда я апдейтю что-то и обновляю данные в таблице, порядок меняется.

Hibernate ничего не сортирует. Он возвращает записи по мере считывания. В общем случае они находяться в произвольном порядке.

Код: plaintext
order by
спасёт Отца Русской Демократии
...
Рейтинг: 0 / 0
Почему не работает Update
    #34562328
Quessir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Angel13
Код: plaintext
order by
спасёт Отца Русской Демократии

ORDER BY спасс всех отцов! :) Спасибо!
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Почему не работает Update
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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