Hibernate对boolean判断方式在不同数据库(Postgres和Sql Server2000)下的表现
2007-10-10 14:23
411 查看
用Hibernate在一定程度上可以实现跨数据库,但有些时候还是有些问题的,即使没有涉及到数据库的高级特性.最近开发了一项目,开始是在windwos+sql server2000,而服务器环境是Linux + Postgresql.我们知道sql server下判断boolean类型是写=0或1,而postgresql下呢,判断boolean类型是=false或true.但我们是用hibernate3做中间件来完成映射的.那HQL里应该怎样对boolean类型进行判断呢?
我们以从数据库里查询所有未打上删除标记的文章记录为例,第一种写法:
代码
find("from Article as t where t.delFlag = false");
render_code();
这种写法在sql server2000下是肯定不能运行的,但postgresql下可以;
再看第2种写法:
代码
find("from Article as t where t.delFlag = 0");
render_code();
这种写法在postgresql下肯定不行,但sql server2000下却可以;
第3种写法:
代码
find("from Article as t where t.delFlag = ?",false);
render_code();
这种写法在postgresql下和sqlserver2000下都是可以的.
我们得出的结论是:不要在Hql里拼接字符串.
同时也期待新版本的Hibernate能有更好的容错能力.
我们以从数据库里查询所有未打上删除标记的文章记录为例,第一种写法:
代码
find("from Article as t where t.delFlag = false");
render_code();
这种写法在sql server2000下是肯定不能运行的,但postgresql下可以;
再看第2种写法:
代码
find("from Article as t where t.delFlag = 0");
render_code();
这种写法在postgresql下肯定不行,但sql server2000下却可以;
第3种写法:
代码
find("from Article as t where t.delFlag = ?",false);
render_code();
这种写法在postgresql下和sqlserver2000下都是可以的.
我们得出的结论是:不要在Hql里拼接字符串.
同时也期待新版本的Hibernate能有更好的容错能力.
相关文章推荐
- 利用MyEclipse从数据库反向生成实体类之Hibernate方式
- Oracle数据库几种不同的数据库启动和关闭方式
- 通过SQL脚本导入数据到不同数据库避免重复导入三种方式
- MyEclipse从数据库反向生成实体类之Hibernate方式 反向工程
- hibernate操作数据库时报错解决方式
- MyEclipse从数据库反向生成实体类之Hibernate方式 反向工程
- hibernate 在不使用xml配置的方式生成数据库表的方法
- 用hibernate注解的方式控制要插入到数据库中的日期的格式
- hibernate继承映射[映射单独一个tablexml版本]实例【与19相同,方式不同,未验证】(二十)
- Hibernate查询之SQL查询,查询结果用new新对象的方式接受,hql查询,通过SQL查询的结果返回到一个实体中,查询不同表中内容,并将查到的不同表中的内容放到List中
- 不同数据库系统NULL判断的一点细节
- MyEclipse从数据库反向生成实体类之Hibernate方式 反向工程
- Hibernate 不同数据库的连接及SQL方言
- hibernate不同数据库的连接及方言
- hibernate不同数据库的连接及方言
- Hibernate基于注解方式配置来实现实体和数据库之间存在某种映射关系
- Hibernate 不同数据库的连接及SQL方言
- C#中使用SQL语句生成DataTable,对不同的数据库,处理方式不同,返回的结果属性不同
- 不同数据库的连接方式
- 判断是否是数值的几种不同方式的效率比较