流畅的hibernate内连接
本文关键字:连接 hibernate | 更新日期: 2023-09-27 18:12:29
我有3个表(Master, Imagen, Linea):
Master
public virtual int Id { get; private set; }
public virtual Imagen imagen { get; set; }
Imagen
public virtual int Id { get; private set; }
public virtual Linea linea { get; set; }
Linea
public virtual int Id { get; private set; }
public virtual String Nombre { get; set; }
我需要一个这样的查询:
SELECT * FROM dbo.Master
INNER JOIN dbo.Imagen ON dbo.Master.imagen_id = dbo.Imagen.Id
INNER JOIN dbo.Linea ON dbo.Imagen.linea_id = dbo.Linea.Id
WHERE dbo.Linea_Id = 5
但是我不知道如何告诉Fluent Nhibernate使用automapper创建这个查询。到目前为止,我已经试过了:
ICriteria c = session.CreateCriteria(typeof(Master))
.CreateAlias("dbo.Imagen", "img", JoinType.InnerJoin)
.Add(Restrictions.Eq("img.linea_id", id_linea));
return c.List<Master>();
但是我得到这个错误:无法解析property: dbo of: ImageManager.Model.Entity.Master
关于如何做内连接有什么想法吗?提前感谢
首先,我将从dbo. imagen中删除dbo。使用iccriteria接口时,您需要考虑对象,而不是数据库表,尽管可能存在对象到表和属性到列的一对一映射。
编辑:
另一个选择是使用QueryOver Lambda语法。
var list = session.QueryOver<Master>()
.JoinQueryOver(master => master.imagen)
.Where(imagen => imagen.linea.Id == 5)
.List();
我不能从你之前的评论中工作,如果你已经修复了它,但我会尝试
ICriteria c = session.CreateCriteria(typeof(Master))
.CreateAlias("imagen", "img", JoinType.InnerJoin)
.CreateAlias("img.linea", "lin", JoinType.InnerJoin)
.Add(Restrictions.Eq("lin.Id", 5));
return c.List<Master>();
编辑:修改如下