在Hibernate HQL更新查询中使用联接

编程入门 行业动态 更新时间:2024-10-26 09:35:17
本文介绍了在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更新查询中使用联接

本文发布于:2023-10-23 13:38:15,感谢您对本站的认可!
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:Hibernate   HQL

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!