首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于Oracle8.3和PostgreSQL 11g相等限制的Hibernate空字符串

用于Oracle8.3和PostgreSQL 11g相等限制的Hibernate空字符串
EN

Stack Overflow用户
提问于 2011-04-01 15:19:34
回答 1查看 1.3K关注 0票数 2

How does hibernate use an empty string for an equality restriction?上扩展

我遇到了一个关于如何使用Hibernate限制检查Oracle11g和PostgreSQL之间的空字符串的问题

对于我的特定应用程序,PostgreSQL使用2个单引号'‘保存空值,而Oracle将空值保存为NULL

检查该值是否为空的代码为

代码语言:javascript
复制
 public void AssureNotEmpty() { ...

     //For Oracle 11g    
     valueRestriction = Restrictions.isNotNull(propertyValueAlias);


     //For PostgreSQL
     valueRestriction = Restrictions.and(Restrictions.isNotNull(propertyValueAlias),
                        Restrictions.ne(propertyValueAlias, ""));

当值不为空时,Restrictions.ne(propertyValueAlias,"")在Oracle上失败,因为它将被解释为值!= NULL (始终为false),因为Hibernate使Oracle将"“解释为NULL。

那么,如何使函数与数据库平台无关(因为现在我必须检测哪个数据库正在运行,是PostgreSQL还是Oracle)?

还是我完全误解了什么?

EN

回答 1

Stack Overflow用户

发布于 2011-04-01 17:48:54

在存储值时使用nullif(val, ''),以强制Postgres的行为类似于Oracle

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5510275

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档