kaleidos / grails-postgresql-extensions

Grails plugin to use postgresql native elements such as arrays, hstores,...
Apache License 2.0
78 stars 63 forks source link

NativeQuery does not support jsonb? #126

Open abcfy2 opened 4 years ago

abcfy2 commented 4 years ago

Grails 3.3.10 with java 8

Here is a sample:

import net.kaleidos.hibernate.usertype.JsonbMapType

TestJsonbMap {
    Map map

    static mapping = {
        map type: JsonbMapType
    } 
}

Then query with native sql:

TestJsonbMap.withSession { Session session ->
    session.createNativeQuery('select map from test_jsonb_map').list()
}

Will get this error:

Caused by: org.springframework.orm.hibernate5.HibernateSystemException: No Dialect mapping for JDBC type: 1111; nested exception is org.hibernate.MappingException: No Dialect mapping for JDBC type: 1111
        at org.springframework.orm.hibernate5.SessionFactoryUtils.convertHibernateAccessException(SessionFactoryUtils.java:296)
        at org.grails.orm.hibernate.GrailsHibernateTemplate.doExecute(GrailsHibernateTemplate.java:307)
        at org.grails.orm.hibernate.GrailsHibernateTemplate.execute(GrailsHibernateTemplate.java:243)
        at org.grails.orm.hibernate.GrailsHibernateTemplate.execute(GrailsHibernateTemplate.java:117)
        at org.grails.orm.hibernate.AbstractHibernateDatastore.withSession(AbstractHibernateDatastore.java:351)
        at org.grails.orm.hibernate.AbstractHibernateGormStaticApi.withSession(AbstractHibernateGormStaticApi.groovy:66)
        at org.grails.datastore.gorm.GormEntity$Trait$Helper.withSession(GormEntity.groovy:915)
        at top.dteam.jupiter.backend.user.UserService$$ERwn0B3g.$tt__rank(UserService.groovy:183)
        at grails.gorm.transactions.GrailsTransactionTemplate$2.doInTransaction(GrailsTransactionTemplate.groovy:94)
        at org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:133)
        at grails.gorm.transactions.GrailsTransactionTemplate.execute(GrailsTransactionTemplate.groovy:91)
        at top.dteam.jupiter.backend.user.UserController.rank(UserController.groovy:309)
        ... 83 common frames omitted
Caused by: org.hibernate.MappingException: No Dialect mapping for JDBC type: 1111
        at org.hibernate.dialect.TypeNames.get(TypeNames.java:70)
        at org.hibernate.dialect.TypeNames.get(TypeNames.java:101)
        at org.hibernate.dialect.Dialect.getHibernateTypeName(Dialect.java:683)
        at org.hibernate.loader.custom.JdbcResultMetadata.getHibernateType(JdbcResultMetadata.java:77)
        at org.hibernate.loader.custom.ScalarResultColumnProcessor.performDiscovery(ScalarResultColumnProcessor.java:45)
        at org.hibernate.loader.custom.CustomLoader.autoDiscoverTypes(CustomLoader.java:482)
        at org.hibernate.loader.Loader.processResultSet(Loader.java:2214)
        at org.hibernate.loader.Loader.getResultSet(Loader.java:2170)
        at org.hibernate.loader.Loader.executeQueryStatement(Loader.java:1931)
        at org.hibernate.loader.Loader.executeQueryStatement(Loader.java:1893)
        at org.hibernate.loader.Loader.doQuery(Loader.java:938)
        at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:341)
        at org.hibernate.loader.Loader.doList(Loader.java:2692)
        at org.hibernate.loader.Loader.doList(Loader.java:2675)
        at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2507)
        at org.hibernate.loader.Loader.list(Loader.java:2502)
        at org.hibernate.loader.custom.CustomLoader.list(CustomLoader.java:335)
        at org.hibernate.internal.SessionImpl.listCustomQuery(SessionImpl.java:2200)
        at org.hibernate.internal.AbstractSharedSessionContract.list(AbstractSharedSessionContract.java:1016)
        at org.hibernate.query.internal.NativeQueryImpl.doList(NativeQueryImpl.java:152)
        at org.hibernate.query.internal.AbstractProducedQuery.list(AbstractProducedQuery.java:1414)
        at top.dteam.jupiter.backend.user.UserService$__tt__rank_closure14$$ERwn0B3g.doCall(UserService.groovy:232)
        at org.grails.orm.hibernate.GrailsHibernateTemplate.doExecute(GrailsHibernateTemplate.java:299)
        ... 93 common frames omitted