本文介绍了在Hibernate HQL更新查询中使用联接的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有以下hibernate映射:
i have the following hibernate mapping:
<class name="Domain.Roomreservation, Core" table="Reservationroom"> <id name="ID" unsaved-value="undefined"> <generator class="native"> <!--<param name="sequence">GLOBALSEQUENCE</param>--> </generator> </id> <property name="FromTime" not-null="true" index="IDX_RESRAUM_FromTime" /> <property name="UntilTime" not-null="true" index="IDX_RESRAUM_UntilTime"/> <many-to-one name="Booking" column="Book_ID" index="IDX_RAUMRES_BOOK" lazy="false" class="Domain.Booking, Core" not-null="true" /> </class>Reservationroom 表格如下所示:
ID <pk> Book_ID <fk> FromTime UntilTime .... ....我的Hibernate Query看起来像:
My Hibernate Query looks like:
String hql = "UPDATE Roomreservation as rr set rr.FromTime= 12:15" + "Inner Join Booking b ON rr.Book_ID= b.ID " + "Where b.ID = 95637"; IQuery query = CurrentSession.CreateQuery(hql); int result = query.ExecuteUpdate(); Debug.WriteLine("Rows affected: " + result);但我总是收到错误:NHibernate.Hql.Ast.ANTLR.QuerySyntaxException
有人可以帮我解决这个问题吗?
Can someone help me how to get this to work?
推荐答案你必须使用子查询而不是加入。大致如下:
You have to use subquery instead of join. Roughly as follows:
UPDATE Roomreservation as rr set rr.FromTime= 12:15 WHERE rr.Book_ID IN ( SELECT b.id FROM Booking b WHERE b.id = 95637);另外取决于 FromTime 的类型,它是很可能它应该以其他格式呈现。
Additionally depending about type of FromTime it is likely that it should be presented in some other format.
更多推荐
在Hibernate HQL更新查询中使用联接
发布评论