Hibernate对boolean判断方式在不同数据库(Postgres和Sql Server2000)下的表现

用Hibernate在一定程度上可以实现跨数据库,但有些时候还是有些问题的,即使没有涉及到数据库的高级特性.最近开发了一项目,开始是在windwos+sql server2000,而服务器环境是Linux + Postgresql.我们知道sql server下判断boolean类型是写=0或1,而postgresql下呢,判断boolean类型是=false或true.但我们是用hibernate3做中间件来完成映射的.那HQL里应该怎样对boolean类型进行判断呢?
我们以从数据库里查询所有未打上删除标记的文章记录为例,第一种写法:

代码
  1. find("from Article as t where t.delFlag = false");   
<script type="text/javascript">render_code();</script>
这种写法在sql server2000下是肯定不能运行的,但postgresql下可以;
再看第2种写法:
代码
  1. find("from Article as t where t.delFlag = 0");  
<script type="text/javascript">render_code();</script>
这种写法在postgresql下肯定不行,但sql server2000下却可以;
第3种写法:
代码
  1. find("from Article as t where t.delFlag = ?",false);   
<script type="text/javascript">render_code();</script>
这种写法在postgresql下和sqlserver2000下都是可以的.

 

我们得出的结论是:不要在Hql里拼接字符串.
同时也期待新版本的Hibernate能有更好的容错能力.

 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值