Hibernate QueryException не может разрешить свойство - PullRequest
0 голосов
/ 11 октября 2009

У меня есть этот файл .hbm.xml:

       Evenement.hbm.xml :

      <hibernate-mapping package="com.af.evenement">
         <class name="Evenement" table="TB_EVENEMENT">

         <id name="id" type="string" column="CODE_EVENEMENT">
               <generator class="assigned" />
         </id>

         <set name="causesAnnexes">
            <key column="CODE_EVENEMENT" />
            <one-to-many class="CausesAnnexesEvt" />
         </set>
         ........

и у меня есть этот другой файл .hbm.xml: CausesAnnexesEvt:

       <class name="CausesAnnexesEvt" table="TB_CAUSESANNEXES_EVT">
           <composite-id name="id" class="CausesAnnexesEvtPK">
               <key-many-to-one 
                    class="Evenement"
                    column="CODE_EVENEMENT"
                    name="Evenement"
                />
                <key-many-to-one
                    class="Cause"
                    column="CODE_CAUSE"
                    name=cause"
                 />

                 </composite-id>
          </class>

когда я пытаюсь удалить объект Evenement с этой строкой кода:

       Session s=getCurrentSession();
       tx=s.beginTransaction();
       s.delete(evenement);
       s.flush();
       s.clear();

когда я запускаю приведенный выше код, я получаю следующее исключение:

      QueryException : could not resolve property : causesAnnexesEvt.

Ответы [ 2 ]

0 голосов
/ 11 октября 2009

Показанное исключение не генерируется session.delete (). Либо вы не показали нам полный код (трассировка стека была бы полезна, кстати) ИЛИ он генерируется во время инициализации фабрики сеанса (вызывается изнутри getCurrentSession()?), Потому что один из ваших именованных запросов не может быть проанализирован.

Так что, хотя Аарон прав в том, что пропущено свойство causesAnnexesEvt, являющееся причиной этого исключения, в вашем посте абсолютно ничего не говорится о том, что это должно быть свойство Evenement. Найдите во всех ваших именованных запросах causesAnnexesEvt и посмотрите, какой из них ссылается на него и от какого объекта он хочет получить его.

0 голосов
/ 11 октября 2009

Hibernate ищет поле с именем causesAnnexesEvt в вашем классе Evenement, но не может его найти. Убедитесь, что поле в классе и определение столбца в hbm.xml используют одно и то же имя.

...