提问者:小点点

Hibernate设置最大结果导致异常


我在hibernate会话(而不是实体管理器)中使用标准,每当我使用setMaxResult时,都会得到如下异常:

代码段:

crit2.add(criterion).setFirstResult(first);

如上所述,它工作得很好,但每当我将setmax结果添加为:

crit2.add(criterion).setFirstResult(first).setMaxResults(max);

我得到异常。我尝试了2种方言,并得到2个不同的例外:

方言: org.hibernate.dialect.SQLServer2008Dialect
什么时候: 它从不给出结果,但总是在下面给出异常
异常: 由: com.microsoft.sqlserver.jdbc.SQLServerException: '.' 附近的语法不正确。

方言:org.hibernate.dialect.SQLServerDialect
时间:它按预期返回第一页,但每当我尝试获取第二页或更多页面时,我都会得到异常:
由以下原因引起:com.microsoft.sqlserver.jdbc.SQLServer异常:仅转发结果集不支持请求的操作。

顺便说一下,我正在使用Microsoft SQL Server 2008 R2

编辑:

我意识到问题在于土耳其语-英语字符集的差异。Hibernate使用每个字段的小字母,但在 I 中它生成 i,但对于 Sqlserver 的 I 的下字母是 ı(如土耳其语)

例如:sonIslemTarihi是属性名称,Hibernate将查询创建为sonislem的查询,并给出错误,我将查询更改为sonislem的查询,并从sql服务器管理工作室执行,它按预期进行。

我该怎么处理?


共1个答案

匿名用户

[添加答案,因为时间太长,不适合评论]

我对MS-SQL不太熟悉,但< code > org . hibernate . dialect . SQL server 2008 dialect 似乎是正确的方言。

    <property name="hibernate.connection.CharSet">utf8</property>
    <property name="hibernate.connection.characterEncoding">utf8</property>
    <property name="hibernate.connection.useUnicode">true</property>
    <property name="hibernate.connection.defaultNChar">true</property>

数据库字符编码之间存在一些不匹配