锁定老帖子 主题:一个无奈的Hibernate问题
精华帖 (3) :: 良好帖 (0) :: 新手帖 (10) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2009-09-21
我的意思是按照我之前说的改了CharacterType类后对其返回结果进行封装,
你是说HIBERNATE已经有对没有映射的表使用SQL查询也能封装?我白忙呼了? |
|
返回顶楼 | |
发表时间: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实体。 |
|
返回顶楼 | |
发表时间:2009-09-21
靠,果然可以,字段中间也可以加下杠,居然也能对应上,看来HIBERNATE也做同样的处理,呵呵,白忙呼了
|
|
返回顶楼 | |
发表时间:2009-09-21
最后修改:2009-09-21
dmewy 写道 通过函数在SQL中把你的栏位强制转换成Varchar的..
具体用什么函数自己搜吧.trim 之类的都可以.. 这个方法我认为是可行的,使用oracle的内置函数to_char, LZ可以试试 |
|
返回顶楼 | |
发表时间:2009-09-21
lgdlgd 写道 靠,果然可以,字段中间也可以加下杠,居然也能对应上,看来HIBERNATE也做同样的处理,呵呵,白忙呼了
没有白忙活的说法,至少你是彻底理解掌握了Bean的属性映射处理能力了。 造车轮的最大好处就是,制造者对车轮的了解远胜于使用者,呵呵。 |
|
返回顶楼 | |
发表时间:2009-09-21
timothy_bitty 写道 dmewy 写道 通过函数在SQL中把你的栏位强制转换成Varchar的..
具体用什么函数自己搜吧.trim 之类的都可以.. 这个方法我认为是可行的,使用oracle的内置函数to_char, LZ可以试试 正解! |
|
返回顶楼 | |
发表时间:2009-09-21
我也发现没有白忙活,其实我的实现和你说的还是有些不一样的地方,应用场景不一样
你说的方法只能用于实体有映射的情况,之前没看出来,是因为正好我的实有映射 我的实现不需要任何映射。 |
|
返回顶楼 | |
发表时间:2009-09-23
是做分词的那个大哥吧。。。
听我说:“不要迷恋Hibernate,Hibernate只是一传说。。。” |
|
返回顶楼 | |
发表时间:2009-09-23
linliangyi2007 写道 timothy_bitty 写道 dmewy 写道 通过函数在SQL中把你的栏位强制转换成Varchar的..
具体用什么函数自己搜吧.trim 之类的都可以.. 这个方法我认为是可行的,使用oracle的内置函数to_char, LZ可以试试 正解! 楼主的问题我也遇到过,不过我没楼主那么复杂我就用了这个addScalar方法。 这位兄弟说的用trim或者是to_char我好像也试过,貌似是不行,但是我具体也不记得了,我也是实在逼不得已的情况才对每个属性都addScalar的,不然肯定在sql上做手脚了 |
|
返回顶楼 | |
发表时间:2009-09-24
lgdlgd 写道 这个问题我遇到过,确实都是CharacterType这个类惹的祸,初步看到,HIBERNATE从JDBC取得数据库字段类型,判断如果是CHAR(具体代码好像是12,记不得了),就使用以上的那个类CharacterType来处理,然后这个类直接取第一位,也不管数据库是CHAR(1) 还是CHAR(n),我觉得这是明显有问题的,不知道是不是有什么特殊的原因,不过我使用处理String类型的那个类替换了这个类,到现在快一年了,没发现有什么不妥。
这个问题刚刚遇到,呵呵,支持lgdlgd 的解决方法 |
|
返回顶楼 | |