gpt4 book ai didi

java - Hibernate 3.2 中没有 LONGVARCHAR 的映射

转载 作者:可可西里 更新时间:2023-11-01 08:22:54 25 4
gpt4 key购买 nike

我在 MySQL 5.1 上运行 Hibernate 3.2.0。更新 MySQL 中的 group_concat_max_len 后(因为 group_concat 查询超出了默认值),在执行带有 group_concat 子句的 SQLQuery 时出现以下异常:

“没有 JDBC 类型的方言映射:-1”

-1 是 LONGVARCHAR 的 java.sql.Types 值。显然,增加 group_concat_max_len 值会导致对 group_concat 的调用返回 LONGVARCHAR 值。这似乎是此错误的一个实例:

http://opensource.atlassian.com/projects/hibernate/browse/HHH-3892

我想 Hibernate 3.5 中已经修复了这个问题,但那仍然是一个开发版本,所以我对将其投入生产犹豫不决,也不知道它是否会导致我代码的其他部分出现问题根据。我也可以只使用 JDBC 查询,但我必须用 group_concat 子句替换 SQLQuery 的每个实例。

还有什么建议吗?

最佳答案

是的,两个建议。要么:

  1. HHH-3892 的变化给 Hibernate 3.2.0 打补丁即获取 Hibernate 源代码,应用 r16501 的补丁, r16823r17332 ) 并自己构建 Hibernate。

  2. 或者按照 HHH-1483 中的建议使用自定义方言:

    public class MySQL5Dialect extends org.hibernate.dialect.MySQL5Dialect {
    public MySQL5Dialect() {
    super();
    // register additional hibernate types for default use in scalar sqlquery type auto detection
    // http://opensource.atlassian.com/projects/hibernate/browse/HHH-1483
    registerHibernateType(Types.LONGVARCHAR, Hibernate.TEXT.getName());
    }
    }

选项 #2 易于实现和测试(我没有),而选项 #1 “更干净”但需要(稍微)更多的工作。就我个人而言,我会选择选项 #1,因为这是您将获得的 3.5 版本,因此可以保证无缝升级。

关于java - Hibernate 3.2 中没有 LONGVARCHAR 的映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2326935/

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