我需要更新已加入的子类。由于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'
答案 0 :(得分:1)
如何执行更新查询?你打电话来执行它的方法是什么?你打电话给'ExecuteUpdate'吗?
为什么你认为你不能使用HQL在子类上执行更新查询? AFAIK,这是可能的。