mil*_*_db 1 java mysql mapping innodb hibernate
我在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)
Run Code Online (Sandbox Code Playgroud)
以下是我的配置文件:
<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>
Run Code Online (Sandbox Code Playgroud)
当我尝试在Eclipse IDE中运行应用程序时,不会出现此异常,但是当我创建应用程序jar并运行时,只有我得到了它。提前致谢...
有时,数据库会以无法映射到Hibernate类型的奇怪类型返回自定义SQL查询的结果(尤其是当您使用下的表达式时select)。
您需要找到一个有问题的查询并向其添加显式强制转换。
例如
Object o = session.createSQLQuery("select 2*2").uniqueResult();
Run Code Online (Sandbox Code Playgroud)
可能会导致这样的问题。您可以按以下方式修复它:
Object o = session.createSQLQuery("select cast(2*2 as int)").uniqueResult();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11945 次 |
| 最近记录: |