Tag: hql

NHibernate GroupBy和Sum

我正在开始研究NHibernate,我有一个问题我无法解决,我想知道是否有人可以帮助我。 映射正在“正确”工作但是当我尝试进行分组和求和时,应用程序返回以下错误: “无法解析属性:Course.Price of:Persistence.POCO.RequestDetail” var criteria = session.CreateCriteria(typeof(RequestDetail)) .SetProjection( Projections.ProjectionList() .Add(Projections.RowCount(), “RowCount”) .Add(Projections.Sum(“Course.Price”), “Price”) .Add(Projections.GroupProperty(“Request”), “RequestId”) ) .AddOrder(Order.Asc(“RequestId”)) .SetResultTransformer(Transformers.AliasToEntityMap) .List(); 注1:当我接受代码.Add(Projections.Sum (“Course.Price”), “Price”) ,应用程序会正确地返回结果。 注2:我唯一能做的就是运行下面的代码: query.Length = 0; query.AppendLine(“select”); query.AppendLine(” s.Id,”); query.AppendLine(” s.Identification,”); query.AppendLine(” sum(c.Price) as Total”); query.AppendLine(“from”); query.AppendLine(” Student s”); query.AppendLine(“inner join”); query.AppendLine(” Request r on r.StudentId = s.Id”); query.AppendLine(“inner join “); query.AppendLine(” Requestdetail […]

如何从Type中获取NHibernate.Type.IType?

我尝试执行以下操作: hibQuery.SetParameter(“MyParameter”, valueObject, valueType); 唯一的问题是此方法在第三个参数中需要NHibernate.Type.IType ,但valueType的类型为Type 。 我怎么能把它转换为IType? 任何tipps sl3dg3的thx

在nhibernate中的Linq-ing计算属性无法解析属性Error

我一直试图通过遵循Hendry Luk的计算属性解决方案在我的持久层中创建一个计算属性 。 我可以使用linq查询从数据库中选择值: var result = from parcel in Repository.Query(); 当我尝试在所选结果上执行某个位置时,我得到一个无法解决属性错误。 这是我的代码的样子。 我的型号: namespace ConsoleApplication14 { using System; using System.Collections.Generic; using System.Linq; using System.Linq.Expressions; using System.Text; public class Common1 : ICommon { public virtual int Id { get; set; } public virtual string Name { get; set; } //public static readonly Expression<Func> CalculatedDisplayExpression = […]

NHibernate QueryOver带有子查询和别名

我正在努力将以下(简化)HQL转换为QueryOver: select subscription from Subscription as subscription where not exists ( from Shipment as shipment where shipment.Subscription = subscription and (shipment.DeliveryDate = :deliveryDate) ) 我走到这一步: Subscription subscription = null; Session.QueryOver(() => subscription) .Where(Subqueries.NotExists(QueryOver.Of() .Where(shipment => shipment.Subscription == subscription) .And(shipment=> shipment.DeliveryDate == deliveryDate) .Select(shipment => shipment.Id).DetachedCriteria)); .TransformUsing(new DistinctRootEntityResultTransformer()); 问题是上面的Subqueries和Where语句给了我以下(无效)where子句: where shipment.SubscriptionId is null 当我想要的是: where shipment.SubscriptionId […]

使用HqlBasedQuery参数化HQL IN子句?

你如何传递Nhibernate HQL中’in’子句的列表? 例如 // data input from the user interface, not known at compile time object[] productIds = {1, 17, 36, … }; string hqlQuery = @” from Product as prod where prod.Id in ( ? )”; HqlBasedQuery query = new HqlBasedQuery(typeof(Product), hqlQuery, productIds) ActiveRecordMediator.ExecuteQuery(query); 现在,这不会起作用,就像我希望的那样! 我真的坚持做这样的事情: // data input from the user interface, not […]

NHibernate HQL内部连接(SQL Server,Visual C#)

我想在内部Join中使用HQL。 但是,抛出了查询语法exception。 这是我的C#代码: string sqlQuery = “Select fq FROM Answers as fq INNER JOIN Questions as q ” + ” on fq.questionId=q.questionId”; IList Result; int count = 0; try { using (ISession session = ConnectionModule.OpenSession()) { IQuery query = session.CreateQuery(sqlQuery); session.CreateCriteria(typeof(Answers)); Result = query.List(); } } catch(Exception ex) { MessageBox.Show(ex.Message+”\n”+ex.InnerException); }

使用HQL批量更新/删除后是否必须刷新实体?

我已经编写了一些使用HQL进行批量更新/删除的DAO方法,但我发现在执行查询时,内存中的实体不会同步(缓存不会更新)。 比如,我有一个项目集合,每个项目都有一组,我想删除所有组。 我可以迭代组并删除每个组,但我更喜欢使用HQL和IN运算符运行批量删除。 但是,在执行查询后,列表具有旧对象。 我意识到我必须使用session.refresh()刷新对象。 有没有其他方法可以自动批量更新和更新缓存?

Hibernate查询中的Unicode字符串

在SQL中,可以编写一个查询人员姓名的查询,如下所示: SELECT * FROM Person P WHERE P.Name LIKE N’%ike%’ 此查询将使用unicode字符运行(假设Name列和数据库已设置为处理unicode支持)。 我在HQL中有一个类似的查询,它由Hibernate(NHibernate)运行。 生成的查询如下所示: SELECT P FROM SumTotal.TP.Models.Party.Person P join P.Demographics PD WHERE (PD.LastName LIKE ‘%カタカ%’ ) 不幸的是,在HQL中的文字前面放置一个“N”会导致错误。 我已经尝试转义字符串中的unicode字符,但仍然没有成功。 数据库正在接受并保存来自Hibernate的unicode字符。 我已经能够使用unicode字符串成功填充对象,使用Hibernate保存它,并在数据库中validation它。 在我看来,我不能在自定义查询中使用unicode字符串(或者我也假设命名查询)。 这是Hibernate(Nhibernate)的已知问题或限制吗? 你如何在HQL中使用unicode? 有几个网站建议使用Criteria查询。 由于我正在使用的框架中的限制,这是不可能的。

NHibernate Criteria list属性的任何元素都为true

我有一个已经创建的NHibernate Criteria查询,我需要修改,所以我可以添加一个新的条件。 该查询基于Order对象,该对象具有OrderItems列表,然后每个OrderItem都有一个名为FinalDeliveryIndicator的bool属性。 在我的Criteria查询中,我需要添加一个条件,我希望所有订单中至少有一个OrderItems将FinalDeliveryIndicator bool设置为true 。 目前的查询是: var search = NHibernateSession.CreateCriteria(typeof(Order)) .CreateAlias(“Contract”, “C”, JoinType.InnerJoin) .CreateAlias(“C.Supplier”, “S”, JoinType.InnerJoin) .Add(Restrictions.Eq(“Buyer.Id”, companyId)) .Add(Restrictions.Eq(“IsDeleted”, false)) .Add(Restrictions.Eq(“IsActiveVersion”, true)) .SetFirstResult(paging.PageIndexSQL) .SetMaxResults(paging.PageSize) .AddOrder(SortOrder.Desc(“Id”)); 现在我需要补充我告诉你的那个条件。 此查询已在此应用程序的许多位置使用,因此我无法切换到QueryOver或其他类型的查询,因为存在崩溃的风险。

NHibernate如何查询IList 属性?

我试图使用NHibernate查询我的一个域类上的IList 属性。 这是一个简单的例子来演示: public class Demo { public Demo() { this.Tags = new List(); } public virtual int Id { get; set; } public virtual string Name { get; set; } public virtual IList Tags { get; set; } } 映射如下: 我能够保存和检索就好了。 现在查询我的域类的实例,其中Tags属性包含指定的值: var demos = this.session.CreateCriteria() .CreateAlias(“Tags”, “t”) .Add(Restrictions.Eq(“t”, “a”)) .List(); 导致错误:集合不是关联:Demo.Tags var demos […]