Почему Spring не генерирует DataAccessException в случае, если Hibernate генерирует ObjectNotFoundException? - PullRequest
4 голосов
/ 15 декабря 2010

Почему не Весна 3.0.4 HibernateTemplate метод load() бросок DataAccessException или, более конкретно,ObjectRetrievalFailureException, если Hibernate 3.3.2GA выбрасывает ObjectNotFoundException?

2010-12-15 13:16:03,939 133247782 [[ACTIVE] ExecuteThread: '0' for queue: 'weblogic.kernel.Default (self-tuning)'] INFO  org.hibernate.event.def.DefaultLoadEventListener - Error performing load command
org.hibernate.ObjectNotFoundException: No row with the given identifier exists: [com.db.spgit.abstrack.model.ConsUsCustomMark#78445AAD8]
    at org.hibernate.impl.SessionFactoryImpl$1.handleEntityNotFound(SessionFactoryImpl.java:375) ~[hibernate-3.2.1.ga.jar:3.2.1.ga]
    at org.hibernate.event.def.DefaultLoadEventListener.load(DefaultLoadEventListener.java:145) ~[hibernate-3.2.1.ga.jar:3.2.1.ga]
    at org.hibernate.event.def.DefaultLoadEventListener.proxyOrLoad(DefaultLoadEventListener.java:179) ~[hibernate-3.2.1.ga.jar:3.2.1.ga]
    at org.hibernate.event.def.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:103) ~[hibernate-3.2.1.ga.jar:3.2.1.ga]
    at org.hibernate.impl.SessionImpl.fireLoad(SessionImpl.java:878) [hibernate-3.2.1.ga.jar:3.2.1.ga]
    at org.hibernate.impl.SessionImpl.load(SessionImpl.java:795) [hibernate-3.2.1.ga.jar:3.2.1.ga]
    at org.hibernate.impl.SessionImpl.load(SessionImpl.java:788) [hibernate-3.2.1.ga.jar:3.2.1.ga]
    at org.springframework.orm.hibernate3.HibernateTemplate$3.doInHibernate(HibernateTemplate.java:558) [spring-orm-3.0.4.RELEASE.jar:3.0.4.RELEASE]
    at org.springframework.orm.hibernate3.HibernateTemplate.doExecute(HibernateTemplate.java:406) [spring-orm-3.0.4.RELEASE.jar:3.0.4.RELEASE]
    at org.springframework.orm.hibernate3.HibernateTemplate.executeWithNativeSession(HibernateTemplate.java:374) [spring-orm-3.0.4.RELEASE.jar:3.0.4.RELEASE]
    at org.springframework.orm.hibernate3.HibernateTemplate.load(HibernateTemplate.java:551) [spring-orm-3.0.4.RELEASE.jar:3.0.4.RELEASE]
    at org.springframework.orm.hibernate3.HibernateTemplate.load(HibernateTemplate.java:545) [spring-orm-3.0.4.RELEASE.jar:3.0.4.RELEASE]

Ответы [ 2 ]

4 голосов
/ 16 декабря 2010

Исключением является протокол , не обязательно выброшенный.То, что вы видите, - это журнал для информационного уровня трассировки стека исключений, выполненный hibernate.Если вы посмотрите на исходный код DefaultLoadEventListener (строка 134 в моей версии исходного кода), вы заметите, что он регистрирует исключение, а затем перебрасывает его.след - здесь нет никаких доказательств того, что весна не трансформирует исключение.

0 голосов
/ 16 декабря 2010

Метод org.springframework.orm.hibernate3.SessionFactoryUtils.convertHibernateAccessException() проверяет, является ли исключение net.sf.hibernate.ObjectNotFoundException. Это означает, что он должен бросать UncategorizedDataAccessException.

Я не знаю, является ли это дизайнерским решением или избыточным сайтом (т.е. ошибка весной).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...