【问题标题】:Hibernate and H2 no dialect mapping for jdbc type 0Hibernate 和 H2 没有 jdbc 类型 0 的方言映射
【发布时间】:2021-02-19 10:28:37
【问题描述】:

我通过 MSSQL Server 上的 JpaRepository 运行此查询,它工作正常

 SELECT TOP(8) * FROM (
SELECT distinct a.id as source_id
                , null as f_name
                , null as m_name
                , null as last_name
                , null as full_name           
                , a.name as business_name
                , a.dba_name as dba_name
                , ad.id as address_id
                , ad.line_1 as  address_line_1
                , ad.city_town as city
                , right(tr.code,2) as state
                , ad.zip_postal_code as postal_code
                , co.name as country_name
                , a.national_tax_ident as id_number
                , 'T' as id_number_type
                , null as date_of_birth
                , 'SuretyVP' as data_source_id
                , 'AGENT' as role_id
                , getdate() as cycle_date
                , 299 as create_user_id
                , getdate() as create_date
                , null as update_date
                , null as attention
                , 'agency' as entity_name
              from dbo.Agency a
               inner join dbo.agency_address ag on a.id = ag.agency_id
               inner join dbo.address ad on ad.id = ag.address_id
               inner join [AdminDB].[dbo].[countries] co
                  on ad.country_id = co.id
               inner join [AdminDB].[dbo].[territories] tr
                  on ad.state_province_territory_id = tr.id
               Where a.ofac_processed_ind = 0
               AND ag.address_type_id = 2
               AND ag.exp_date is null
               AND a.agency_status_id = 1
UNION ALL
SELECT distinct c.id as source_id
                  , c.first_name as f_name
                  , c.middle_name as m_name
                  , c.last_name as last_name
                  , null as full_name
                  , null as business_name
                  , null as dba_name
                  , null as address_id
                  , null as address_line_1
                  , null as city
                  , null as state
                  , null as postal_code
                  , 'United States' as country_name
                  , null as id_number
                  , null as id_number_type
                  , null as date_of_birth
                  , 'SuretyVP' as data_source_id
                  , 'AGENT' as role_id
                  , getdate() as cycle_date
                  , 299 as create_user_id
                  , getdate() as create_date
                  , null as update_date
                  , null as attention,
                  'contact' as entity_name
               from dbo.Contact c
               inner join dbo.Agency_contact ac on c.id = ac.contact_id
               inner join dbo.agency a on ac.agency_id = a.id
               Where c.ofac_processed_ind = 0
               AND a.agency_status_id = 1
               ANd c.exp_date is null
               ANd ac.exp_date is null
               AND ac.contact_role_type_id = 12) as data

但是当我尝试使用此查询对 H2 DB 运行集成测试时,出现以下错误

No dialect mapping for jdbc type 0

这是我的 H2 DB 配置 spring.datasource.url=jdbc:h2:mem:test:SAMINTEGERATIONTEST;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE;MODE=MSSQLServer

我看到了类似的主题,但很遗憾没有找到解决我的问题的方法。 如果您有任何建议,我将不胜感激。谢谢!

【问题讨论】:

    标签: spring hibernate h2


    【解决方案1】:

    null as full_namenull as date_of_birthnull as update_datenull as attention 在第一个和第二个查询both 中都没有数据类型,因此UNION ALL 也无法确定数据类型。 H2 本身并不关心这种情况,并假设这些列具有伪造的 NULL 数据类型,并且只能具有 NULL 值。但是您的持久性库不喜欢它。

    最简单的解决方案是在一个查询中的所有这些列中添加一个CAST(或者在它们两个中,如果你愿意,没关系):

    CAST(null AS VARCHAR) as full_name,
    …
    CAST(null AS DATE) as date_of_birth,
    …
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-08-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-08
      • 2015-03-27
      相关资源
      最近更新 更多