【问题标题】:No Dialect mapping for JDBC type没有 JDBC 类型的方言映射
【发布时间】:2017-09-05 09:53:43
【问题描述】:

我想知道如何解决这个错误:

org.hibernate.MappingException: No Dialect mapping for JDBC type: -1
    at org.hibernate.dialect.TypeNames.get(TypeNames.java:56)
    at org.hibernate.dialect.TypeNames.get(TypeNames.java:81)
    at org.hibernate.dialect.Dialect.getHibernateTypeName(Dialect.java:369)

我也参考了这个问题 How to fix “No Dialect mapping for JDBC type: -1” error in java

但我没有得到想要的解决方案。

我的查询是:

     Query langQuery = null; 
     List<Object[]> langList = null;
        StringBuilder strQuery = new StringBuilder();
        strQuery.append("SELECT lw.langWordId,lw.wordText,lt.translatedContent from language_word lw inner join language_translation lt on ");
        strQuery.append(" lw.langWordId=lt.langWordId where lw.isActive="+Boolean.TRUE+" ");

        langQuery = session.createSQLQuery(strQuery.toString());

        langList = langQuery.list();

langList = langQuery.list(); 在这一行我收到此错误。

我的 pom.xml 文件有依赖关系:

<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-core</artifactId>
    <version>3.6.0.Final</version>
</dependency>

<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate</artifactId>
    <version>3.2.6.ga</version>
</dependency>
<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate</artifactId>
    <version>3.2.3.ga</version>
</dependency>

<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>ejb3-persistence</artifactId>
    <version>1.0.2.GA</version>
    <type>pom</type>
</dependency>
<dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-annotations</artifactId>
        <version>3.3.1.GA</version>
    </dependency>

<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-commons-annotations</artifactId>
    <version>3.3.0.ga</version>
</dependency>

<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-validator</artifactId>
    <version>3.1.0.GA</version>
</dependency>

我有什么使命吗?

我在检索列表时使用了 addscalar,但仍然出现该错误。

任何帮助将不胜感激。

【问题讨论】:

  • 那么,您使用的是哪个数据库(包括完整版),您使用的是哪种 Hibernate 方言?
  • 我正在使用 mysql,我如何检查休眠方言?
  • 您使用的是哪个版本的 MySQL,以及您使用的是哪种 Hibernate 方言。请具体和完整。休眠方言应该在你的 persistence.xml 或者代码中的某个地方指定
  • 我目前正在使用 mysql 5.0 和 hibernate 3.0。
  • 我很难相信您正在使用如此古老的 MySQL 和 Hibernate 版本,但即便如此,它们也不是 Hibernate 方言。

标签: java hibernate maven


【解决方案1】:

//请检查您的查询,当您的查询中有语法错误时会发生此错误

【讨论】:

    【解决方案2】:

    当 db 中没有为特定类型定义对应的类型映射时,会发生此错误。在您的情况下,-1 是 LONGVARCHAR 的类型值(您可以在 java.sql.Types 类中检查它们)。它表明您在 db 中的列类型无法映射到字段类型。所以你应该扩展 MySql 方言和以下代码:

    public class CustomTypeSupportDialect extends MySqlSQLDialect
    {
       public CustomTypeSupportDialect ()
       {
          super();
          this.registerColumnType(Types.LONGVARCHAR, "column_type_name_in_mysql");
          this.registerHibernateType(Types.LONGVARCHAR, "column_type_name_in_mysql");
       }
    }
    

    然后将此方言用作您的休眠方言。

    【讨论】:

      猜你喜欢
      • 2014-08-08
      • 2015-03-27
      • 2014-03-05
      • 2023-03-17
      • 2012-06-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多