`

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

阅读更多
     用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");

     这种写法在sql server2000下是肯定不能运行的,但postgresql下可以;
     再看第2种写法:
find("from Article as t where t.delFlag = 0");

     这种写法在postgresql下肯定不行,但sql server2000下却可以;
     第3种写法:
find("from Article as t where t.delFlag = ?",false);

     这种写法在postgresql下和sqlserver2000下都是可以的.

    我们得出的结论是:不要在Hql里拼接字符串.
    同时也期待新版本的Hibernate能有更好的容错能力.
分享到:
评论
4 楼 fangang 2007-10-09  
我也赞同movingboy的观点,第三种方法已经足够了。第一第二种方法这种不带参数的查询方式是不值得提倡的。
3 楼 movingboy 2007-09-26  
DavyLee 写道
movingboy 写道
最后一种办法不是解决得很好吗?你还期望怎样更好的容错能力呢?

如果第一种和第二种也都正确不是更好吗?
难道第一种和第二种写法不应该正确吗?

既然你要在SQL语句中使用依赖于数据库实现的boolean值,你可以写原生SQL语句,而不是HQL
2 楼 DavyLee 2007-09-26  
movingboy 写道
最后一种办法不是解决得很好吗?你还期望怎样更好的容错能力呢?

如果第一种和第二种也都正确不是更好吗?
难道第一种和第二种写法不应该正确吗?
1 楼 movingboy 2007-09-26  
最后一种办法不是解决得很好吗?你还期望怎样更好的容错能力呢?

相关推荐

    SQL Server和国产数据库之间数据移植研究.pdf

    在表1中,列举了Kingbase ES 3.1和SQL Server 2000之间共同的数据类型,比如datetime、timestamp、boolean等,以及各自特有的数据类型。数据类型的对应关系是数据迁移过程中的一个重要参考,能够帮助开发者了解如何...

    sqlserver数据库类型对应Java中的数据类型

    在 Java 中,对数据库的操作需要通过 JDBC(Java Database Connectivity)来实现,而在 JDBC 中,需要将 SQL Server 的数据类型映射到 Java 中的数据类型。下面将详细介绍 SQL Server 数据库类型对应 Java 中的数据...

    连接远程SQL Server数据库并执行SQL语句

    ### 连接远程SQL Server数据库并执行SQL语句 在IT行业中,远程访问数据库是非常常见的需求之一,尤其是在分布式系统或需要跨地域管理数据的情况下。本文将详细介绍如何通过编程方式连接到一个位于远程服务器上的SQL...

    SQL Server 2008数据库实用教程 sqlserver数据库基础教程 第5章 T-SQL语言 共68页.pptx

    【SQL Server 2008数据库实用教程】深入解析T-SQL语言 T-SQL,全称为Transact-SQL,是Microsoft SQL Server数据库管理系统中基于ANSI SQL-99标准的扩展实现。它是SQL Server的核心,用于管理和操作数据库中的数据。...

    SQLServer常用字段类型

    ### SQL Server 常用字段类型详解 在数据库设计与管理中,选择合适的字段类型对于数据的存储效率、查询性能以及数据完整性至关重要。SQL Server 提供了丰富的数据类型,覆盖了从基本数值到复杂文本、图像等各类数据...

    数据库应用技术SQL2005基础篇 张蒲生习题参考答案

    例如,`GRANT`、`DENY`和`REVOKE`命令用于控制用户对数据库对象的访问。 8. **备份与恢复**:了解SQL Server 2005的备份策略,包括完整备份、差异备份和日志备份。学会使用`BACKUP`和`RESTORE`命令,以应对数据丢失...

    三大数据库的数据类型及sql server08快捷键

    MySQL、Oracle和SQL Server是三大主流的关系型数据库管理系统(RDBMS),它们各自具有独特的特性和功能。数据类型是数据库中的基本构建块,定义了数据的结构和意义。而SQL Server 2008中的快捷键则能提高开发人员和...

    SQL Server数据库与Java类型对照.doc

    在进行数据库开发时,尤其是在使用 SQL Server 作为后端数据库并与 Java 应用程序进行交互时,了解 SQL Server 的数据类型与 Java 数据类型的对应关系非常重要。这种对应关系有助于确保数据在数据库与应用程序之间...

    SqlServer和Oracle的不同的一些体会

    这是因为Oracle和Sql Server在处理`DateTime`类型时采用了不同的扩展实现方式。 #### 六、Timestamp类型的差异 - **Sql Server**:`Timestamp`类型是以二进制格式存储的,可以将`DataSet`中的该字段类型设置为`...

    Java数据类型,Hibernate数据类型,标准sql数据类型之间的对应表

    当我们在使用Hibernate时,我们需要了解Java数据类型如何与SQL数据类型对应,以便正确地配置实体类和Hibernate的映射文件(通常是.hbm.xml文件或使用注解的方式)。例如,Java的`int`类型通常对应于SQL的`INTEGER`,...

    ACCESS转成SQL数据库

    对于许多初学者而言,由于熟悉Microsoft Access而对SQL Server 2000的使用较为陌生,本篇文章旨在详细介绍如何将Access数据库转换为SQL Server 2000数据库,并在此过程中需要注意的一些事项。 #### 二、转换步骤...

    Access与sql_server_语法差异.doc

    Access 和 SQL Server 都是常用的数据库管理系统,但它们在语法上存在一些差异,本文将对 Access 和 SQL Server 的语法差异进行总结和比较。 日期函数 Access 中的 Date() 函数对应 SQL Server 中的 getdate() ...

    sqlserver基础类(连接,关闭,查询,更新)

    根据提供的文件信息,我们可以归纳出一个关于SQL Server基础操作类的知识点总结,主要涉及数据库连接、关闭、查询和更新的基本方法。以下是对这些知识点的详细解释: ### SQL Server 基础类概述 #### 一、类的定义...

    16套《SQL数据库管理与开发》试题及习题参考答案

    选择合适的数据类型对数据库的性能和准确性至关重要。 3. 数据库设计: 正确的数据库设计涉及范式理论,如第一范式(1NF)、第二范式(2NF)、第三范式(3NF)和BCNF(Boyce-Codd范式)。理解这些范式有助于减少...

    SQL Server 教程

    3. **数据类型**:理解SQL Server支持的各种数据类型,如INT、VARCHAR、DATE、BOOLEAN等,它们决定了如何存储和处理不同类型的数据。 4. **索引与查询优化**:索引能显著提高查询速度,学习如何创建、管理和使用...

    19春北理工《SQLServer数据库应用》在线作业答案.pdf

    5. 创建登录:为Windows 2000用户或组在SQL Server中建立登录账号,可以使用多种方式,包括系统存储过程、系统表或通过企业管理器,因此选项D是正确的。 6. 默认值:在SQL Server中,逻辑型(Boolean)数据类型的...

    hibernate使用中与各种数据库字段类型对应类型训练

    通过这次训练,你将深入理解Hibernate如何处理不同数据库字段类型,并学会如何在实际项目中灵活运用,提升开发效率和代码质量。记住,熟练掌握这些知识是成为一名高效Java开发者的必备技能之一。

    SQLServer数据库设计规范.txt

    命名都采用英文字符,每个单词的首个字母要大写 2.7 SQL语句的编写规范 数据库中存储过程和触发器中涉及大量的SQL语句,对SQL语句的编写规范如下: 关键字大写:在SQL语句的编写中,凡是SQL语句的关键字一律大写,如...

Global site tag (gtag.js) - Google Analytics