代码之家  ›  专栏  ›  技术社区  ›  ssedano

如何在hibernate中通过sqlquery执行更新

  •  0
  • ssedano  · 技术社区  · 16 年前

    我需要更新加入的子类。因为hibernate不允许更新hql或命名查询中加入的子类,所以我想通过sql来完成。我也不能使用sql命名查询,因为hibernate不支持通过命名查询进行更新。

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

    在执行查询之前,必须对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 回复  |  直到 14 年前
        1
  •  1
  •   Frederik Gheysels    16 年前

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

    为什么您认为不能使用hql对子类执行update查询?阿飞,这是可能的。