【问题标题】:Incompatible API error when using org.hibernate.dialect.SQLServer2008Dialect with hibernate3-maven-plugin将 org.hibernate.dialect.SQLServer2008Dialect 与 hibernate3-maven-plugin 一起使用时出现不兼容的 API 错误
【发布时间】:2012-06-09 16:23:03
【问题描述】:

我之前已将我的项目设置为使用 hibernate3-maven-plugin 和 org.hibernate.dialect.SQLServerDialect 作为 hibernate.dialect,一切正常。

但是当我将方言改为org.hibernate.dialect.SQLServer2005Dialect时,hibernate3-maven-plugin遇到如下错误:

执行 org.codehaus.mojo:hibernate3-maven-plugin:2.2:hbm2ddl: java.land.NoSuchMethodError: org.hibernate.dialect.SQLServer2005Dialect.registerColumnType(IJLjava/lang/String;)V 时遇到 API 不兼容

hbm2ddl 是否支持 SQLServer2005Dialect 或 SQLServer2008Dialect(我也遇到与 2008 相同的错误)?

我正在使用 2.2 版的插件和 hibernate.4.1.0.Final 和 JPA 2.0。

【问题讨论】:

    标签: sql-server-2008 sql-server-2005 hbm2ddl hibernate3-maven-plugin


    【解决方案1】:

    刚刚因 gradle 和 glassfish 出现同样的错误而浪费了几天时间。我从源代码中添加了自己的 SqlServer2005Dialect,并注释掉了 registerColumnType() 行。从这里,错误变为“java.lang.NoSuchFieldError: INSTANCE”

    这是一个更多的google-able 错误,基本上意味着您有 2 组休眠 jar。

    就我而言,在将 hibernate 放入 gradle 构建之前,我已经通过 glassfish 安装了 hibernate。从 glassfish 卸载休眠修复了我的错误,我现在可以运行 2008 或 2005 的方言。

    【讨论】:

    • 这听起来很有希望。我将来必须调查。在此期间,我只是在 Web 应用程序中使用了较新的 SQLServer2008Dialect,而在插件中使用了较旧的 SQLServerDialect。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-04-15
    • 2013-08-19
    • 2013-02-19
    • 1970-01-01
    • 2013-02-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多