繁体   English   中英

JDBC 类型没有方言映射

[英]No Dialect mapping for JDBC type

我想知道如何解决此错误:

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 ,但仍然出现该错误。

任何帮助将不胜感激。

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

当 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");
   }
}

然后使用这种方言作为你的休眠方言。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM