当前位置: 首页 > 面试题库 >

通过nHibernate准则使用SQL CONVERT函数

壤驷经国
2023-03-14
问题内容

我有一个sql视图,其中每列的数据类型是string,与jquery datatables插件一起使用。

其中一列包含英国格式的日期dd / mm / yyyy。

该列需要保留一个字符串以用于插件的击键过滤,但是对于排序,需要将其视为日期。

我正在使用nhibernate条件创建sql查询,并且我想生成以下order by子句,因为这可以正确地对日期进行排序

order by CONVERT (datetime, DateOfBirth, 103)

但是,Nhibernate.Criterion.Projections没有Convert方法。有Cast,但由于它是英国日期格式,因此出现以下错误:

The conversion of a varchar data type to a datetime data type 
resulted in an out-of-range value

我已经尝试过以下方法

 criteria.AddOrder(
             Order.Desc(
     Projections.SqlFunction(
                              "CONVERT",
                               NHibernateUtil.DateTime, 
                               new IProjection[]
                               {
                                 Projections.Property(propNames[orderByColumn]), 
                                 Projections.Property("104")
                               }
                             )
                         )
                   );

但是我收到以下错误消息:

NHibernate.HibernateException: Current dialect 
       NHibernate.Dialect.MsSql2008Dialect doesn't support the function: CONVERT

使用时可以使用SQL转换功能Nhibernate.Criterion吗?


问题答案:

如果设置 104 不是必需的,我们可以快速解决:使用CAST而不是CONVERT。此SQL函数内置在NHibernate方言中:

Projections.Cast(NHibernateUtil.DateTime
               ,Projections.Property(propNames[orderByColumn]))

如果设置 104 很重要,我们可以创建自己的 方言 ,注册CONVERT函数,然后从此开始使用它…直到永远



 类似资料:
  • 问题内容: 我的项目使用了Nashorn Javascript引擎。我正在尝试迁移到java11,也从Nashorn迁移到Graal。我在这里读到我可以通过从JDK 11开始的标准JDK安装来使用graal。此外,我还读到Graal-SDK已上传到Maven Central,并且具有Java标记以便于移植。因此,我使用了jdk11,将maven依赖项添加到pom.xml中,并使用了Java标志,但

  • 问题内容: 有一种方法可以将此SQL语句转换为NHibernate条件? 我发现NHibernate不支持工会。 问题答案: 因此,我找到了两种解决方案。我会分别执行每个查询,而不是合并结果。这就像一个联合,但不是在数据库中执行,而是在内存中执行。 要么

  • 问题内容: 我在获取nHibernate.Search来创建索引时遇到了麻烦。 如果我使用nHibernate.dll和nHibernate.Search.dll的1.2.1.4,则可以正确创建索引,并且可以使用Luke(Lucene实用程序)对其进行检查。创建了一个segments文件以及一个Fragments文件等 但是,当我使用nHibernate.dll和nHibernate.Search

  • 如果反射值对象(reflect.Value)中值的类型为函数时,可以通过 reflect.Value 调用该函数。使用反射调用函数时,需要将参数使用反射值对象的切片 []reflect.Value 构造后传入 Call() 方法中,调用完成时,函数的返回值通过 []reflect.Value 返回。 下面的代码声明一个加法函数,传入两个整型值,返回两个整型值的和。将函数保存到反射值对象(refle

  • 我的100米大小,量化数据: 期望的结果:

  • 我需要将此查询复制到JPA CriteriaBuilder代码中: 这是我的代码: