如何在Hibernate中通过SQLQuery执行更新

时间:2010-04-14 12:11:45

标签: sql hibernate sql-update

我需要更新已加入的子类。由于Hibernate不允许更新hql或named-query中的连接子类,我想通过SQL来实现。我也不能使用sql命名查询,因为Hibernate不支持通过命名查询进行更新。

所以我决定使用SQLQuery。但是Hibernate抱怨没有调用addScalar():

  

org.hibernate.QueryException:在执行查询之前,必须在sql查询上调用addEntity()或addScalar()。

更新是否会返回受影响的行数以及如何命名该列?

还有其他方法可以在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 个答案:

答案 0 :(得分:1)

如何执行更新查询?你打电话来执行它的方法是什么?你打电话给'ExecuteUpdate'吗?

为什么你认为你不能使用HQL在子类上执行更新查询? AFAIK,这是可能的。