gpt4 book ai didi

hibernate - 在 nHibernate 中使用 CreateCriteria 向连接添加限制

转载 作者:行者123 更新时间:2023-12-04 14:49:30 24 4
gpt4 key购买 nike

初学者问题我敢肯定:

我正在尝试在 2 个表之间进行连接并同时限制结果,如下所示:

var bookings = session.CreateCriteria<Booking>("p")
.CreateCriteria("p.BookingLocations", JoinType.InnerJoin)
.Add(Restrictions.Eq("p.BookingLocations.locationID", locationId))
.SetMaxResults(30)
.List<Booking>();

我收到错误:
无法解析属性:BookingLocations.locationID 的:Booking

我可以看到 Booking.BookingLocation 包含许多记录,Booking 和 BookingLocation 之间存在一对多关系,但我不确定这是否是问题的原因。

我想如果是的话,我需要做一些类似的事情:
.Add(Restrictions.Eq("p.BookingLocations.first().locationID", locationId))

...但毫无疑问这行不通;)

类(class)
public class Booking
{
public virtual int Id { get; set; }
public virtual Int32 bookingID { get; set; }
public virtual Int32 bookingAdminID { get; set;
}

public class BookingLocation
{
public virtual int Id { get; set; }
public virtual Int32 bookingID { get; set; }
public virtual Int32 locationID { get; set; }
}

映射
 public BookingMap()
{
Table("Bookings");

Id(x => x.Id).Column("ID");
Map(x => x.bookingID).Column("BookingID");
Map(x => x.bookingAdminID).Column("BookingAdminID");
}

public class BookingLocation
{
public virtual int Id { get; set; }
public virtual Int32 bookingID { get; set; }
public virtual Int32 locationID { get; set; }
}

最佳答案

子标准定义了一个新的范围,它以 BookingLocation 为根。您只需要使用 locationID :

session.CreateCriteria<Booking>("p")
.CreateCriteria("p.BookingLocations", JoinType.InnerJoin)
.Add(Restrictions.Eq("locationID", locationId))

关于hibernate - 在 nHibernate 中使用 CreateCriteria 向连接添加限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9132252/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com