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

如何在Hibernate中通过SQLQuery执行更新,sql,hibernate,sql-update,Sql,Hibernate,Sql Update,我需要更新一个联接的子类。由于Hibernate不允许在hql或命名查询中更新连接的子类,所以我希望通过SQL来完成。我也不能使用sql命名查询,因为Hibernate不支持通过命名查询进行更新 所以我决定使用SQLQuery。但是Hibernate抱怨没有调用addScalar(): org.hibernate.QueryException:在执行查询之前,必须对sql查询调用addEntity()或addScalar() 更新是否返回受影响的行数以及该列的名称 在hibernate中,有没有

我需要更新一个联接的子类。由于Hibernate不允许在hql或命名查询中更新连接的子类,所以我希望通过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>  

如何执行更新查询?你调用什么方法来执行它?你叫“ExecuteUpdate”吗


为什么您认为不能使用HQL对子类执行更新查询?好的,这是可能的。

你能解释一下你想对连接的子类执行什么查询吗?我正在使用SpringDAOImpl代码:query namedQuery=session.getNamedQuery,我得到org.hibernate.QueryException:针对连接或联合子类的更新语句还不受支持!Hibernate 3.0.5版感谢您的快速响应!是的,你是对的,但是在我们正在使用的版本(3.0.5)之后发布的版本中。你们中有人知道如何用3.0.5做到这一点吗?谢谢
update SubJoinedClass set name = 'newName'