Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 没有JDBC类型的方言映射:-102_Java_Sql_Oracle_Hibernate - Fatal编程技术网

Java 没有JDBC类型的方言映射:-102

Java 没有JDBC类型的方言映射:-102,java,sql,oracle,hibernate,Java,Sql,Oracle,Hibernate,我有个问题。我的程序中的一些sql可以由用户编写。所以我不知道这个sql中有哪些表或列。因此,我想检测sql中的列名。但是如果sql中有日期,我会得到JDBC类型的无方言映射:-102错误。 我怎么办?我在java中使用Hibernate3.6或4.1.3。我的数据库是oracle数据库。方言是org.hibernate.dialogue.oracle10galute 我真的不知道sql中有什么 这是我的密码: SQLQuery q=session.createSQLQuery("SELECT

我有个问题。我的程序中的一些sql可以由用户编写。所以我不知道这个sql中有哪些表或列。因此,我想检测sql中的列名。但是如果sql中有日期,我会得到JDBC类型的无方言映射:-102错误。 我怎么办?我在java中使用Hibernate3.6或4.1.3。我的数据库是oracle数据库。方言是org.hibernate.dialogue.oracle10galute

我真的不知道sql中有什么

这是我的密码:

SQLQuery q=session.createSQLQuery("SELECT * FROM tbl WHERE id = 2"); 
q.setResultTransformer(AliasToEntityMapResultTransformer.INSTANCE); 
List<Map<String,Object>> aliasToValueMapList=q.list();
for(Map<String,Object> map : aliasToValueMapList){
    System.out.println(map.keySet());
    break;
}
我希望任何人都知道这个问题的解决办法



Greetz

如果您使用session.createQuery,这将使用您的方言使用Hibernate查询语言与数据库对话。但是如果使用createSQLQuery,则必须使用PL/SQL与oracle对话。

如果使用session.createQuery,则将使用您的方言使用Hibernate查询语言与数据库对话。但是,如果使用createSQLQuery,则必须使用PL/SQL与oracle对话。

您的查询试图返回一列,而JDBC ResultSetMetaData报告的是Hibernate不知道如何读取的类型为-102的列。您需要使用org.hibernate.SQLQueryaddScalar在查询中注册该列的类型,否则您可能无法使用该转换器并实际定义到实体org.hibernate.SQLQueryaddRoot/org.hibernate.SQLQueryaddEntity的整个结果集映射。查看文档了解用法

您的查询试图返回JDBC ResultSetMetaData报告类型为-102的列,Hibernate不知道如何读取该列。您需要使用org.hibernate.SQLQueryaddScalar在查询中注册该列的类型,否则您可能无法使用该转换器并实际定义到实体org.hibernate.SQLQueryaddRoot/org.hibernate.SQLQueryaddEntity的整个结果集映射。查看文档了解用法

是hibernate 3.6还是4.1.3?您使用的是什么版本的java?是Oracle 10g数据库吗?我两者都在使用。我想在下周之后使用4.1.3,所以我测试了它。目前我使用的是3.6。我的数据库是一个Oracle11g实例,但没有相应的方言,是Hibernate3.6还是4.1.3?您使用的是什么版本的java?是Oracle 10g数据库吗?我两者都在使用。我想在下周之后使用4.1.3,所以我测试了它。目前我使用的是3.6。我的数据库是一个Oracle11g实例,但是没有方言,我想这一定是问题的答案。通常不建议使用session.CreateSqlQueryI如果我这样做,那么我必须像这样更改代码:Query lu=session.createQueryFROM tbl,其中id=2;但随后出现错误:未映射[来自tbl,其中id=2]。但是我不能绘制地图,因为我不知道桌子的名称。我想这一定是问题的答案。通常不建议使用session.CreateSqlQueryI如果我这样做,那么我必须像这样更改代码:Query lu=session.createQueryFROM tbl,其中id=2;但随后出现错误:未映射[来自tbl,其中id=2]。但是我不能映射,因为我不知道表名是的,我现在知道了,但我不知道sql中有日期,我也不知道表,所以我不能映射到特定的类。sql中有日期吗?不知道那是什么意思。我们将找出您的驱动程序报告为-102的类型,并用您的方言映射它。这是另一个解决办法-102不是标准的JDBC类型。好的,…102表示时间戳/日期类型。我怎么能用我的方言来表达呢。只有当我的查询中有时间戳/日期时,才会出现错误。这不是时间戳或日期类型的JDBC标准类型映射:。我首先想知道为什么您的数据库将它们映射到非标准JDBC代码。除此之外,让Hibernate将其理解为JDBC类型代码意味着编写一个扩展适当提供的方言的方言,并为这个-102类型调用方言RegisterHibernateType?你有一个例子吗?是的,我现在知道了,但是我不知道sql中有日期,我也不知道表,所以我无法将它映射到特定的类。sql中有日期吗?不知道那是什么意思。我们将找出您的驱动程序报告为-102的类型,并用您的方言映射它。这是另一个解决办法-102不是标准的JDBC类型。好的,…102表示时间戳/日期类型。我怎么能用我的方言来表达呢。只有当我的查询中有时间戳/日期时,才会出现错误。这不是时间戳或日期类型的JDBC标准类型映射:。我首先想知道为什么您的数据库将它们映射到非标准JDBC代码。除此之外,让Hibernate将其理解为JDBC类型代码意味着编写一个扩展适当提供的方言的方言,并为这个-102类型调用方言RegisterHibernateType?你有没有举个例子?