【问题标题】:How to fix “No Dialect mapping for JDBC type: -1” error in java如何修复java中的“没有JDBC类型的方言映射:-1”错误
【发布时间】:2016-01-28 06:56:10
【问题描述】:

我遇到一个错误如何解决此错误,即

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)

我正在尝试获取该列中的 XML 列数据是 XML 格式

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(); 行出现错误。

【问题讨论】:

  • -1java.sql.Types.LONGVARCHAR。您的数据库的休眠方言显然没有这种类型的映射(也许它不支持它)。您使用的是哪个数据库和哪种 Hibernate 方言?
  • @Mark Rotteveel:我正在使用 oracle10g,在查询中我尝试 id 替换 xml 工作正常,但 xml 不工作它会引发错误
  • 但是您使用的是哪种方言(Oracle10gDialect 或其他方言)?
  • Oracle10gDialect

标签: java oracle hibernate jdbc


【解决方案1】:

对于我的情况,类型丢失了,所以设置 qu.addEntity(MyBean.class);工作,在你的情况下 String.class 可能工作

【讨论】:

    【解决方案2】:

    我在处理未映射的 MySQL 表列时遇到了问题。

    列类型:文本

    然后我不得不使用 addScalar():

    Query query =  em. createNativeQuery(originalQuery);
    ((SQLQuery) ((HibernateQuery) query).getHibernateQuery())
                .addScalar("column1", new LongType())
                .addScalar("column2", new IntegerType())
                .addScalar("column3", new StringType());
    List<Object[]> values = query.getResultList();
    

    【讨论】:

    • 您的查询是存储库的一部分吗?你在哪里让你成为 addScalar 的?我认为这不在您的实体中。谢谢
    猜你喜欢
    • 2014-07-20
    • 2016-05-12
    • 2012-06-17
    • 1970-01-01
    • 2014-08-08
    • 2015-03-27
    • 2014-03-05
    相关资源
    最近更新 更多