久违了,我的hibernate
久违了,我的hibernate
一个基于oracle的hibernate系统变形记
从学了hibernate之后从业这五六年,一直没有机会项目实现这项技术,实在是一大遗憾!
今天一位兄弟叫我帮他处理项目问题,于是兴师动众的把项目发给了我~ 初步看了一下,是基于SSH的项目,数据库用的是甲骨文。我这个人比较懒,不喜欢折腾,尤其是甲骨文这个庞然大物,占用空间大,下载又得花不少时间,运行又特别占用资源,安装以及环境搭建又麻烦,一不留神半天就过去了,简直是慢性自杀我的精力和青春…
一个念头油然而生——换库——MySQL,嗯,对,换库,说是急,那是快,说干就干,于是凭着当年对hibernate的了解不亦悦乎了起来…
首先是准备环境,下载安装MySQL,这没啥好说的,三加五除二,十分钟搞定。然后是加入MySQL驱动,方言变换(代码),数据源变换,打开自动建表配置(代码)。嗯,差不多了吧,ok,跑一遍试试,哇,报错……序列策略错误(给出错误异常~,好吧,忽略了这一步…
相信看官你知道接下来应该干嘛了,嗯,对的,没错,主键策略变换,于是我把主键策略全部换成了native,呵呵,跑跑试试,呀,SQL异常(详情),看了看,说什么longtext型字段condition处有什么语法错误,不会吧,这可是hbn自动生成的语句啊,hbn没这么弱吧,怎么会犯这个低级的错误呢…,牢骚过后,我开始排查问题,第一感觉以为是longtext类型语法错误,555,longtext仿佛没用过,难道longtext有什么特殊用法,或者数据库版本问题【我安装的是MySQL5.6】?于是找了找资料,没发现特殊说明,,,到底错误哪儿呢,把SQL拿去手动执行了一把,还是错,但更醒目了,发现condition的颜色和关键字相同,改改试试,恩,对,没错,原来问题在这里,哈哈~,让大家笑话了~
【在此抛个问题给大家~为什么这里pojo的string属于hibernate生成创建表语句时会映射为longtext类型?补充…这个属于映射配置中指定的length为1000】(贴出pojo和xml)
有了这个铺垫,接着看其他的SQL错,恩,屡试不爽,都是这个原因,搞定!天啦,两百好几十张表,要是一个个个创建,不是一级残废,就该二级残废了吧,这得到什么时候啊~~
表是全部创建好了,不过,运行起来还是有sql错误(详情)…xxx表不存在,仔细一看,没在项目中找到相应的pojo和xml啊,跟踪过去发现都是些自定义的sql查询的表(贴出语句),特卖的,这个坑,hibernate搞不定了,不看到原表,我也搞不定了,你们呢?
哈哈,嗯,就写到这儿吧!下次再会!
一个基于oracle的hibernate系统变形记
从学了hibernate之后从业这五六年,一直没有机会项目实现这项技术,实在是一大遗憾!
今天一位兄弟叫我帮他处理项目问题,于是兴师动众的把项目发给了我~ 初步看了一下,是基于SSH的项目,数据库用的是甲骨文。我这个人比较懒,不喜欢折腾,尤其是甲骨文这个庞然大物,占用空间大,下载又得花不少时间,运行又特别占用资源,安装以及环境搭建又麻烦,一不留神半天就过去了,简直是慢性自杀我的精力和青春…
一个念头油然而生——换库——MySQL,嗯,对,换库,说是急,那是快,说干就干,于是凭着当年对hibernate的了解不亦悦乎了起来…
首先是准备环境,下载安装MySQL,这没啥好说的,三加五除二,十分钟搞定。然后是加入MySQL驱动,方言变换(代码),数据源变换,打开自动建表配置(代码)。嗯,差不多了吧,ok,跑一遍试试,哇,报错……序列策略错误(给出错误异常~,好吧,忽略了这一步…
相信看官你知道接下来应该干嘛了,嗯,对的,没错,主键策略变换,于是我把主键策略全部换成了native,呵呵,跑跑试试,呀,SQL异常(详情),看了看,说什么longtext型字段condition处有什么语法错误,不会吧,这可是hbn自动生成的语句啊,hbn没这么弱吧,怎么会犯这个低级的错误呢…,牢骚过后,我开始排查问题,第一感觉以为是longtext类型语法错误,555,longtext仿佛没用过,难道longtext有什么特殊用法,或者数据库版本问题【我安装的是MySQL5.6】?于是找了找资料,没发现特殊说明,,,到底错误哪儿呢,把SQL拿去手动执行了一把,还是错,但更醒目了,发现condition的颜色和关键字相同,改改试试,恩,对,没错,原来问题在这里,哈哈~,让大家笑话了~
【在此抛个问题给大家~为什么这里pojo的string属于hibernate生成创建表语句时会映射为longtext类型?补充…这个属于映射配置中指定的length为1000】(贴出pojo和xml)
有了这个铺垫,接着看其他的SQL错,恩,屡试不爽,都是这个原因,搞定!天啦,两百好几十张表,要是一个个个创建,不是一级残废,就该二级残废了吧,这得到什么时候啊~~
表是全部创建好了,不过,运行起来还是有sql错误(详情)…xxx表不存在,仔细一看,没在项目中找到相应的pojo和xml啊,跟踪过去发现都是些自定义的sql查询的表(贴出语句),特卖的,这个坑,hibernate搞不定了,不看到原表,我也搞不定了,你们呢?
哈哈,嗯,就写到这儿吧!下次再会!