Java 获取JDBC类型的无方言映射异常
我不熟悉hibernate和java。我正在尝试执行本机sql查询,但我被卡住了。有人能帮我解决或检查我哪里做错了吗 我的java代码是: 我确实调试了我的程序,发现我的程序正在中断,这一行是Java 获取JDBC类型的无方言映射异常,java,hibernate,jdbc,Java,Hibernate,Jdbc,我不熟悉hibernate和java。我正在尝试执行本机sql查询,但我被卡住了。有人能帮我解决或检查我哪里做错了吗 我的java代码是: 我确实调试了我的程序,发现我的程序正在中断,这一行是SQLQuery query=session.createSQLQuery(sql) 休眠配置文件: <hibernate-configuration> <session-factory> <property name="hibernate.byteco
SQLQuery query=session.createSQLQuery(sql)代码>
休眠配置文件:
<hibernate-configuration>
<session-factory>
<property name="hibernate.bytecode.use_reflection_optimizer">false</property>
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.password">****</property>
<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/empdata</property>
<property name="hibernate.connection.username">****</property>
<property name="hibernate.dialect">org.hibernate.dialect.MySQLInnoDBDialect</property>
<property name="hibernate.show_sql">false</property>
<property name="hibernate.format_sql">false</property>
<property name="hibernate.cache.use_query_cache">true</property>
<property name="hibernate.c3p0.acquire_increment">1</property>
<property name="hibernate.c3p0.idle_test_period">10</property> <!-- seconds -->
<mapping resource="hibernate/Salaryinfo.hbm.xml" />
</session-factory>
</hibernate-configuration>
假的
com.mysql.jdbc.Driver
****
jdbc:mysql://localhost:3306/empdata
****
org.hibernate.dialogue.mysqlinnodbdialogue
假的
假的
真的
1.
10
您的数据库正在使用REAL
数据类型,但您的方言不理解它,因此无法将其映射到其中一种Java类型。请参阅。您需要放置addScalar()使用本机sqlquery语法编写代码>。为了避免使用ResultSetMetadata的开销,或者为了更明确地显示返回的内容,可以使用addScalar()
像这样:
您使用的是哪种数据库和Hibernate方言?请注意,类型7
是java.sql.Types.REAL
您没有设置addScaler类型…请尝试SQLQuery query=session.createSQLQuery(sql.addScalar)(“principle”,new FloatType()).addScalar(“interest”,new FloatType());显示你的冬眠状态configuration@PiyushGupta我试过这个…现在它对我有效,谢谢你节省我的时间。
Severe: org.hibernate.MappingException: No Dialect mapping for JDBC type: 7
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:192)
at org.hibernate.loader.custom.CustomLoader.getHibernateType(CustomLoader.java:161)
at org.hibernate.loader.custom.CustomLoader.autoDiscoverTypes(CustomLoader.java:131)
at org.hibernate.loader.Loader.getResultSet(Loader.java:1678)
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:2145)
at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2029)
at org.hibernate.loader.Loader.list(Loader.java:2024)
.
.
.
.
<hibernate-configuration>
<session-factory>
<property name="hibernate.bytecode.use_reflection_optimizer">false</property>
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.password">****</property>
<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/empdata</property>
<property name="hibernate.connection.username">****</property>
<property name="hibernate.dialect">org.hibernate.dialect.MySQLInnoDBDialect</property>
<property name="hibernate.show_sql">false</property>
<property name="hibernate.format_sql">false</property>
<property name="hibernate.cache.use_query_cache">true</property>
<property name="hibernate.c3p0.acquire_increment">1</property>
<property name="hibernate.c3p0.idle_test_period">10</property> <!-- seconds -->
<mapping resource="hibernate/Salaryinfo.hbm.xml" />
</session-factory>
</hibernate-configuration>
SQLQuery query = session.createSQLQuery(sql)
.addScalar("principle", new FloatType())
.addScalar("interest", new FloatType());