[英]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.