【发布时间】:2011-07-27 11:40:10
【问题描述】:
延长 How does hibernate use an empty string for an equality restriction?
我遇到了关于如何在 Oracle 11g 和 PostgreSQL 之间检查空字符串的问题 使用休眠限制
对于我的具体应用, PostgreSQL 使用 2 个单引号 '' 保存空值 而Oracle将空值保存为NULL
判断值是否为空的代码是
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 上失败,因为它将被解释为 value != NULL(始终为 false),因为 Hibernate 使 Oracle 将 "" 解释为 NULL。
那么我怎样才能使函数与数据库平台无关(因为现在我必须检测正在运行的数据库是 PostgreSQL 还是 Oracle)?
还是我完全误解了什么?
【问题讨论】:
标签: sql oracle hibernate postgresql criteria