2010-04-14 29 views
0

我需要更新聯合子類。由於Hibernate不允許在hql或named-query中更新已連接的子類,我想通過SQL來完成。我也不能使用SQL命名查詢,因爲Hibernate不支持通過命名查詢進行更新。如何在Hibernate中通過SQLQuery執行更新

所以我決定使用SQLQuery。但休眠投訴關於不呼叫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' 
+0

你能解釋一下你想對聯合子類執行什麼查詢嗎? – oedo 2010-04-14 12:16:52

回答

1

您如何執行更新查詢?你打什麼方法來執行它?你叫'ExecuteUpdate'嗎?

爲什麼你認爲你不能使用HQL對子類執行更新查詢? AFAIK,這是可能的。

+0

Im使用SpringDAOImpl代碼: 查詢namedQuery = session.getNamedQuery 而我得到 org.hibernate.QueryException:更新針對尚未支持的聯合或聯合子類的語句! 休眠版本3.0.5 感謝您的快速響應! – ssedano 2010-04-14 13:15:01

+0

是的,你說的對,但在後來發布的版本中,我們使用的版本(3.0.5)。 你們誰都知道如何用3.0.5來做到這一點?謝謝 – ssedano 2010-04-15 08:19:11

相關問題