项目场景
利用hibernate的hbm.xml生成实体库表,数据库采用国产的达梦数据库。达梦数据库使用clob类型原生驱动获取数据时对前端传数据时会发生【Infinite recursion】错误,所以产品要求使用longvarchar字段替代clob字段。然而hibernate的工厂类里不支持longvarchar字段,所以反映射到数据库时只有clob或者text类型。
附上映射类型表
解决办法
利用hibernate提供的自定义映射类型方法,实现UserType。指定返回类型为SQL中的LONGVARCHAR类型
模板文件配置
继承达梦的方言,声明SQL中的LONGVARCHAR类型对应”longvarchar”字段
生成配置中指定自定义的方言
即可生成LONGVARCHAR字段