gpt4 book ai didi

java - hibernate 方言

转载 作者:行者123 更新时间:2023-11-29 05:50:21 27 4
gpt4 key购买 nike

我正在使用 Hibernate 从 sql server 2008 访问数据。同时执行以下代码

Session session = sessionFactory.openSession();
String qry="select Form_Id,SUBSTRING(
(SELECT ( '' + t2.Form_Layout_Txt) FROM Form_Layout_Info t2
WHERE t1.Form_Id = t2.Form_Id " +
" GROUP BY Form_Layout_Txt FOR XML path('') ), 1,1000000000)
FROM Form_Layout_Info t1 GROUP BY Form_Id";

SQLQuery query = session.createSQLQuery(qry);
recordList = query.list();

我的 Hibernate 属性是

hibernate.connection.driver_class=com.microsoft.sqlserver.jdbc.SQLServerDriver
hibernate.connection.url=jdbc:sqlserver://localhost:1433;databaseName=abc;integratedSecurity=false;
hibernate.dialect=org.hibernate.dialect.SQLServerDialect
hibernate.connection.username=sa
hibernate.connection.password=p123asc

我收到以下错误

No Dialect mapping for JDBC type: -9 

如何解决问题。

最佳答案

您需要在 sql server 的配置中提供 hibernate.dialect=org.hibernate.dialect.SQLServerDialect

要么在 hibernate.cfg.xml 中将其提供为:

<hibernate-configuration>
<session-factory name="session-factory">
.....
<property name="hibernate.dialect">org.hibernate.dialect.SQLServerDialect</property>
....
</session-factory>
</hibernate-configuration>

或在属性文件中为:

hibernate.dialect=org.hibernate.dialect.SQLServerDialect

我不知道你用的是哪种方式,所以把我知道的都贴出来

我为您的问题找到了 2 个解决方案 here :

  1. 尝试将您的驱动程序更改为 jTDS使用微软提供的ms sql server jdbc驱动会导致这个问题,而jTDS没有给出这个问题。

  2. 您可能需要向您的 hibernate 查询显式“添加标量”。你可能有这样的事情:

    sess.createSQLQuery("SELECT * FROM CATS");//尝试更改为:sess.createSQLQuery("SELECT * FROM CATS") .addScalar("ID", Hibernate.LONG) .addScalar("名称", Hibernate.STRING) .addScalar("出生日期", Hibernate.DATE)

关于java - hibernate 方言,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14138120/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com