【问题标题】:No Dialect mapping for JDBC type: 7没有 JDBC 类型的方言映射:7
【发布时间】:2023-03-17 09:45:01
【问题描述】:

当我尝试提取浮点值时,我得到了这个异常。 我正在将 MYSQL 与 Hibernate (Liferay) 一起使用

休眠:

select IFNULL(a.deltatime,0),   b.vlid , a.TESTDATE  
from testresult a,XREFRTGTESTRESULT b 
where a.id = b.id
    and a.TESTDATE between '2011-06-01 22:03:01 ' AND   '2011-06-02 22:03:01 '  
    and a.id='51006' 
org.hibernate.MappingException:没有 JDBC 类型的方言映射:7 在 org.hibernate.dialect.TypeNames.get(TypeNames.java:56) 在 org.hibernate.dialect.TypeNames.get(TypeNames.java:81) 在 org.hibernate.dialect.Dialect.getHibernateTypeName(Dialect.java:368) 在 org.hibernate.loader.custom.CustomLoader$Metadata.getHibernateType(CustomLoader.java:559) 在 org.hibernate.loader.custom.CustomLoader$ScalarResultColumnProcessor.performDiscovery(CustomLoader.java:485) 在 org.hibernate.loader.custom.CustomLoader.autoDiscoverTypes(CustomLoader.java:501) 在 org.hibernate.loader.Loader.getResultSet(Loader.java:1787) 在 org.hibernate.loader.Loader.doQuery(Loader.java:662) 在 org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:224) 在 org.hibernate.loader.Loader.doList(Loader.java:2211) 在 org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2095) 在 org.hibernate.loader.Loader.list(Loader.java:2090) 在 org.hibernate.loader.custom.CustomLoader.list(CustomLoader.java:289) 在 org.hibernate.impl.SessionImpl.listCustomQuery(SessionImpl.java:1695) 在 org.hibernate.impl.AbstractSessionImpl.list(AbstractSessionImpl.java:142) 在 org.hibernate.impl.SQLQueryImpl.list(SQLQueryImpl.java:150) 在 com.virtela.reports.drilldown.service.persistence.ReportsDrillDownMySQLFinderImpl.getVPNDrillDown(ReportsDrillDownMySQLFinderImpl.java:61) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 在 java.lang.reflect.Method.invoke(Method.java:597)

【问题讨论】:

标签: hibernate


【解决方案1】:

此链接可能是相关的:

https://forum.hibernate.org/viewtopic.php?f=1&t=973997&view=next

忠告:我发现将我对错误根本原因的最佳猜测剪切并粘贴到 Google 中很有帮助。很有可能我不是第一个遇到特定问题的人。


【讨论】:

  • 我没有任何映射文件,我只有 Hibernate.cfg 文件,我在 Liferay 中使用它。
  • 我很高兴他发布而不是谷歌搜索,因为这就是创建答案的方式。这是我在 Google 上的热门搜索。没有人问,答案永远不会被索引。
  • 如果他没有问,也许我发布的链接会在最上面。可能比答案本身有更多关于 SO SEO 实践的内容。
【解决方案2】:

您能提供您的类定义和 Hibernate 映射吗? JDBC 类型 7 是 java.sql.Types.REAL。您可能需要指定 float 或 double。

【讨论】:

    【解决方案3】:

    它应该从 Hibernate 3.2.5 开始修复:HHH-2663。如果您必须使用旧版本的 Hibernate,您可以使用以下选项之一:

    • 在数据库中使用不同的类型,如double
    • 向查询添加显式强制转换:case(IFNULL(a.deltatime,0) as double)
    • 子类化您使用的Dialect 并手动注册类型REAL

    【讨论】:

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