gpt4 book ai didi

java - Hibernate setMaxResult 导致异常

转载 作者:太空宇宙 更新时间:2023-11-04 14:59:16 27 4
gpt4 key购买 nike

每当我使用 setMaxResult 时,我都会在 hibernate session (而不是实体管理器)中使用条件,我会收到如下异常:

代码段:

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.SQLServerException:仅转发结果集不支持请求的操作。

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

编辑:

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

例如: sonIslemTarihi 是属性名称,hibernate 将查询创建为 sonislemtarihi 并给出错误,我将查询更改为 sonıslemtarihi 并从 SQL Server Management Studio 执行,结果符合预期。

我该如何处理这个问题?

最佳答案

[添加答案,因为它太长,不适合发表评论]

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

    <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>

数据库字符编码与 hibernate 生成的字符编码之间存在一些不匹配。尝试更改这些配置参数并观察生成的查询。

关于java - Hibernate setMaxResult 导致异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22806131/

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