Я пытаюсь выполнить поиск по заданным критериям.В этом представлении есть несколько полей для нескольких различных объектов в моем приложении, которые пользователь может захотеть найти.
Когда я ввожу имя объекта, который хочу найти, я добавляю ограничение для поля имени в отсоединенные критерии перед вызовом .findByCriteria()
.Это заставляет .findByCriteria()
получить список результатов с именем, которое я ищу.
Также, когда я просматриваю свой журнал, я вижу, что hibernate вызывает select
statment.
Я добавил еще одну сущность в мое представление с несколькими полями для поиска.Когда я пытаюсь найти поле, связанное с этой новой сущностью, в моем журнале появляется исключение.
Когда я просматриваю свой журнал с исключением, я вижу, что hibernate вызывает вызов select
статистики сupdate
оператор сразу после select
(я не пытаюсь обновить запись, просто получить ее в списке).
Так почему hibernate вызывает обновление, когда я звоню .findByCriteria()
для моегоновый объект?
org.hibernate.exception.SQLGrammarException: Could not execute JDBC batch update
at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:90)
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66)
at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:275)
at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:266)
SQL, который выполняется:
Hibernate:
select
*
from
( select
this_.SEARCH_ID as SEARCH1_35_0_,
this_.ST_NM as ST24_35_0_
from
SEARCH_RESULT this_
where
this_.LOAN_TYPE=? )
where
rownum <= ?
DEBUG 2012-03-21 11:37:19,332 142195 (http-8181-3:org.springframework.orm.hibernate3.HibernateTemplate):
[org.springframework.orm.hibernate3.HibernateAccessor.flushIfNecessary(HibernateAccessor.java:389)]
Eagerly flushing Hibernate session
DEBUG 2012-03-21 11:37:19,384 142247 (http-8181-3:org.hibernate.SQL):
[org.hibernate.jdbc.util.SQLStatementLogger.logStatement(SQLStatementLogger.java:111)]
update
SEARCH_RESULT
set
ADDR_LINE1=?,
ASSGND_REGION=?,
BASE_DEAL_ID=?,
ST_NM=?
where
SEARCH_ID=?