论坛首页 Java企业应用论坛

一个无奈的Hibernate问题

浏览 18665 次
精华帖 (3) :: 良好帖 (0) :: 新手帖 (10) :: 隐藏帖 (0)
作者 正文
   发表时间:2009-09-21  
我的意思是按照我之前说的改了CharacterType类后对其返回结果进行封装,
你是说HIBERNATE已经有对没有映射的表使用SQL查询也能封装?我白忙呼了?
0 请登录后投票
   发表时间:2009-09-21   最后修改:2009-09-21
lgdlgd 写道
我的意思是按照我之前说的改了CharacterType类后对其返回结果进行封装,
你是说HIBERNATE已经有对没有映射的表使用SQL查询也能封装?我白忙呼了?


是啊,已经封装了,以下是来自Hiberante参考文档的原文:
引用

16.1.2. 实体查询(Entity queries)
     上面的查询都是返回标量值的,也就是从resultset中返回的“裸”数据。下面展示如何通
过addEntity()让原生查询返回实体对象。
sess.createSQLQuery("SELECT * FROM CATS").addEntity(Cat.class);
sess.createSQLQuery("SELECT ID, NAME, BIRTHDATE FROM CATS").addEntity(Cat.class);

This query specified:
  •SQL查询字符串
  •要返回的实体
假设Cat被映射为拥有ID,NAME和BIRTHDATE三个字段的类,以上的两个查询都返回一个List,每个
元素都是一个Cat实体。

0 请登录后投票
   发表时间:2009-09-21  
靠,果然可以,字段中间也可以加下杠,居然也能对应上,看来HIBERNATE也做同样的处理,呵呵,白忙呼了
0 请登录后投票
   发表时间:2009-09-21   最后修改:2009-09-21
dmewy 写道
通过函数在SQL中把你的栏位强制转换成Varchar的..
具体用什么函数自己搜吧.trim 之类的都可以..



这个方法我认为是可行的,使用oracle的内置函数to_char, LZ可以试试
0 请登录后投票
   发表时间:2009-09-21  
lgdlgd 写道
靠,果然可以,字段中间也可以加下杠,居然也能对应上,看来HIBERNATE也做同样的处理,呵呵,白忙呼了


没有白忙活的说法,至少你是彻底理解掌握了Bean的属性映射处理能力了。
造车轮的最大好处就是,制造者对车轮的了解远胜于使用者,呵呵。
0 请登录后投票
   发表时间:2009-09-21  
timothy_bitty 写道
dmewy 写道
通过函数在SQL中把你的栏位强制转换成Varchar的..
具体用什么函数自己搜吧.trim 之类的都可以..



这个方法我认为是可行的,使用oracle的内置函数to_char, LZ可以试试


正解!
0 请登录后投票
   发表时间:2009-09-21  
我也发现没有白忙活,其实我的实现和你说的还是有些不一样的地方,应用场景不一样
你说的方法只能用于实体有映射的情况,之前没看出来,是因为正好我的实有映射
我的实现不需要任何映射。
0 请登录后投票
   发表时间:2009-09-23  
是做分词的那个大哥吧。。。
听我说:“不要迷恋Hibernate,Hibernate只是一传说。。。”
0 请登录后投票
   发表时间:2009-09-23  
linliangyi2007 写道
timothy_bitty 写道
dmewy 写道
通过函数在SQL中把你的栏位强制转换成Varchar的..
具体用什么函数自己搜吧.trim 之类的都可以..



这个方法我认为是可行的,使用oracle的内置函数to_char, LZ可以试试


正解!



楼主的问题我也遇到过,不过我没楼主那么复杂我就用了这个addScalar方法。

这位兄弟说的用trim或者是to_char我好像也试过,貌似是不行,但是我具体也不记得了,我也是实在逼不得已的情况才对每个属性都addScalar的,不然肯定在sql上做手脚了
0 请登录后投票
   发表时间:2009-09-24  
lgdlgd 写道
这个问题我遇到过,确实都是CharacterType这个类惹的祸,初步看到,HIBERNATE从JDBC取得数据库字段类型,判断如果是CHAR(具体代码好像是12,记不得了),就使用以上的那个类CharacterType来处理,然后这个类直接取第一位,也不管数据库是CHAR(1) 还是CHAR(n),我觉得这是明显有问题的,不知道是不是有什么特殊的原因,不过我使用处理String类型的那个类替换了这个类,到现在快一年了,没发现有什么不妥。


这个问题刚刚遇到,呵呵,支持lgdlgd 的解决方法
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics