【问题标题】:Getting org.hibernate.MappingException: No Dialect mapping for JDBC type: -4 exception?获取 org.hibernate.MappingException:没有 JDBC 类型的方言映射:-4 异常?
【发布时间】:2012-10-10 17:37:06
【问题描述】:

我在 query.list() 行收到以下异常:

org.hibernate.MappingException: No Dialect mapping for JDBC type: -4
    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)
    at org.hibernate.loader.custom.CustomLoader$Metadata.getHibernateType(CustomLoader.java:559)
    at org.hibernate.loader.custom.CustomLoader$ScalarResultColumnProcessor.performDiscovery(CustomLoader.java:485)
    at org.hibernate.loader.custom.CustomLoader.autoDiscoverTypes(CustomLoader.java:501)
    at org.hibernate.loader.Loader.getResultSet(Loader.java:1787)
    at org.hibernate.loader.Loader.doQuery(Loader.java:662)
    at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:224)
    at org.hibernate.loader.Loader.doList(Loader.java:2211)
    at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2095)
    at org.hibernate.loader.Loader.list(Loader.java:2090)
    at org.hibernate.loader.custom.CustomLoader.list(CustomLoader.java:289)
    at org.hibernate.impl.SessionImpl.listCustomQuery(SessionImpl.java:1695)
    at org.hibernate.impl.AbstractSessionImpl.list(AbstractSessionImpl.java:142)
    at org.hibernate.impl.SQLQueryImpl.list(SQLQueryImpl.java:152)

以下是我的配置文件:

<property name="hibernate.connection.driver_resource">com.mysql.jdbc.Driver</property>
        <property name="hibernate.connection.password">mysql</property>
        <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/mydatabase</property>
        <property name="hibernate.connection.username">root</property>
        <property name="hibernate.default_schema">mydatabase</property>
        <property name="hibernate.dialect">org.hibernate.dialect.MySQL5InnoDBDialect</property>

当我尝试在 Eclipse IDE 中运行应用程序时,不会出现此异常,但是当我创建应用程序 jar 并运行时,只有我得到它。 提前谢谢...

【问题讨论】:

  • 确保您为所使用的数据库使用了正确的方言。

标签: java mysql hibernate mapping innodb


【解决方案1】:

找到解决办法:

只需更改查询,我正在获取整个记录而不是选择特定的。 例如从表中,然后从表对象中获取相应的字段(此处为脚本)值,而不是使用 从表中选择脚本,现在可以正常工作了。

【讨论】:

    【解决方案2】:

    有时数据库会以无法映射到 Hibernate 类型的奇怪类型返回自定义 SQL 查询的结果(尤其是当您使用 select 下的表达式时)。

    您需要找到一个有问题的查询并向其添加显式强制转换。

    例如

    Object o = session.createSQLQuery("select 2*2").uniqueResult();
    

    可能会导致这样的问题。您可以按以下方式修复它:

    Object o = session.createSQLQuery("select cast(2*2 as int)").uniqueResult();
    

    【讨论】:

    • 现在我得到 org.hibernate.exception.SQLGrammarException: could not execute query exception.... 我的表中有 MEDIUMBLOB 那么我应该提供什么?
    猜你喜欢
    • 2021-06-29
    • 2012-02-09
    • 2018-08-30
    • 2012-06-17
    • 2018-04-08
    • 2014-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多