Как выполнить обновление через SQLQuery в Hibernate - PullRequest
0 голосов
/ 14 апреля 2010

Мне нужно обновить присоединенный подкласс. Так как Hibernate не позволяет обновлять объединенные подклассы в hql или named-query, я хочу сделать это через SQL. Я также не могу использовать sql named-query, потому что обновления через named-query не поддерживаются в Hibernate.

Поэтому я решил использовать SQLQuery. Но Hibernate жалуется на то, что не вызывает addScalar ():

org.hibernate.QueryException: addEntity () или addScalar () должны быть вызваны для запроса SQL перед выполнением запроса.

Обновления возвращают количество затронутых строк и как называется этот столбец?

Есть ли другие способы обновления в объединенном подклассе в hibernate?

Вот краткий пример того, что я пытаюсь сделать:

<hibernate-mapping>  
        <class name="example.NiceClass" table="NICE_CLASS">  
  <meta attribute="class-code"></meta>  
  <id name="id" type="java.lang.Long">  
   <column name="NICE_CLASS_ID" precision="8" />  
   <generator class="sequence">  
    <param name="sequence">NICE_CLASS_SEQ</param>  
   </generator>  
  </id>  
    </class>  
</hibernate-mapping>      
<hibernate-mapping package="example">  
    <joined-subclass name="SubJoinedClass" table="SUB_JOINED_CLASS"
     extends="NiceClass">  
        <key column="NICE_CLASS_ID" foreign-key="NICE_JOINED_ID_FK"/>  
  <property name="name" type="string" not-null="false">  
   <column name="NAME" >  
    <comment>name</comment>  
   </column>  
  </property>  
         </joined-subclass>  
</hibernate-mapping>  

Заранее спасибо!

Итак, я хочу сделать:

update SubJoinedClass set name = 'newName'

1 Ответ

1 голос
/ 14 апреля 2010

Как выполнить запрос на обновление? Какой метод вы вызываете, чтобы выполнить его? Вы называете «ExecuteUpdate»?

И почему вы думаете, что вы не можете выполнить запрос на обновление подкласса с помощью HQL? AFAIK, это возможно.

...