SQLite - No Dialect mapping for JDBC type: 0 (Hibernate)

怎甘沉沦 提交于 2019-12-02 12:41:54
Alex Wu

JDBC type: 0 means Null in java.sql.Types. The resultSet must contains null value, but hibernate could not support this datatype for SQLite. So you should set this mapping in your customize at.beko.rainstar2.dialect.SQLiteDialect.

public class SQLiteDialect extends Dialect {
    public SQLiteDialect() {
        super();
        ...
        ...
        ...
        registerColumnType(Types.NULL, "null");
        registerHibernateType(Types.NULL, "null");
    }
    ...
    ...
}

I had a similar issue, in where my SQL query was normalising multiple rows into one column, giving;

org.hibernate.MappingException: No Dialect mapping for JDBC type: -9

So I had to wrap the XML result in a converter to convert it to varchar.

e.g. changed from

STUFF((select '   ' + RFID as [text()] from InnerTable inner 
       where inner.id = outer.id for XML PATH ('')), 1, 1, '') 
as RFIDs

to

CONVERT(varchar(100), 
STUFF((select '   ' + RFID as [text()] from InnerTable inner 
       where inner.id = outer.id for XML PATH ('')), 1, 1, '')
) as RFIDs
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!