gpt4 book ai didi

sql - Hibernate 空字符串用于 PostgreSQL 8.3 和 Oracle 11g 的相等限制

转载 作者:行者123 更新时间:2023-11-29 12:14:44 25 4
gpt4 key购买 nike

延伸至 How does hibernate use an empty string for an equality restriction?

我有一个关于如何检查 Oracle 11g 和 PostgreSQL 之间的空字符串的问题使用 hibernate 限制

对于我的具体应用,PostgreSQL 使用 2 个单引号 '' 保存空值而 Oracle 将空值保存为 NULL

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

 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)?

还是我完全误解了什么?

最佳答案

在存储值时使用 nullif(val, '') 强制 Postgres 表现得像 Oracle

关于sql - Hibernate 空字符串用于 PostgreSQL 8.3 和 Oracle 11g 的相等限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5510275/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com