我有以下hibernate映射:
<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表如下所示:
Reservationroom
ID <pk> Book_ID <fk> FromTime UntilTime .... ....
我的hibernate查询看起来像:
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);
但是我总是 Error: NHibernate.Hql.Ast.ANTLR.QuerySyntaxException
Error: NHibernate.Hql.Ast.ANTLR.QuerySyntaxException
有人可以帮我如何使它正常工作吗?
您必须使用子查询而不是联接。大致如下:
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,应该以其他格式显示它。
FromTime