【问题标题】:How to resolve “No Dialect mapping for JDBC type: -1” error in java [duplicate]如何解决java中的“没有JDBC类型的方言映射:-1”错误[重复]
【发布时间】:2016-05-12 07:31:02
【问题描述】:

我收到 No Dialect mapping for JDBC type: -1 错误。 以前我问过同样的问题,但我没有找到正确的解决方案。所以我又问了。

如何解决此错误,即,

org.hibernate.MappingException: No Dialect mapping for JDBC type: -1
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:393)

我的代码在这里:

Session session = null;
session =  getHibernateTemplate().getSessionFactory().openSession();
Query qu = session.createSQLQuery("select xml from details " +
        "where start_date between (select * from(select eventdate from emplyoeevent " +
        "where event='logout' and event_id in (select session_id from session " +
        "where session_emplyoee='"+Id+"') order by eventdate asc) " +
        "where rownum=1) and TO_DATE(SYSDATE, 'DD-MON-YYYY HH:MI:SS PM')");
List li =  qu.list();

我在 List li = qu.list(); 中遇到错误线。这个错误是什么意思。

任何建议将不胜感激

【问题讨论】:

  • 将代码发布到您的hibernate.cfg.xml

标签: java hibernate jdbc


【解决方案1】:

当您想要检索单个列而不是实体时,您可以使用addScalar 指定。

下面的例子假设xml是一个String类型,你可以改变它来适应真实的类型。

qu = qu.addScalar("xml", StringType.INSTANCE);
List li = qu.list();

JDBC 类型 -1LONGVARCHAR,是您的查询应该返回的类型。

根据版本不同,Hibernate 可能不支持此功能,请参阅:No mapping for LONGVARCHAR in Hibernate 3.2

因此,您必须像上面的示例一样自己指定类型。

【讨论】:

  • :qu = qu.addScalar("xml", StringType.INSTANCE); 其中tio更改您的代码我的意思是整个更改我的查询或查询后替换您的代码跨度>
  • 只需在“List li = qu.list();”之前添加这一行,其余代码保持原样。
  • 我添加了相同的方式,但它在 INSTANCE 中显示错误,我还添加了 import org.hibernate.type.StringType;
猜你喜欢
  • 1970-01-01
  • 2014-07-20
  • 2012-06-17
  • 2012-02-17
  • 1970-01-01
  • 2016-04-02
  • 2014-08-08
  • 2015-03-27
相关资源
最近更新 更多