Расширение на
Как hibernate использует пустую строку для ограничения равенства?
У меня проблема с проверкой пустой строки между Oracle 11g и PostgreSQL
используя Hibernate Restriction
Для моего конкретного приложения
PostgreSQL сохраняет пустое значение, используя две одинарные кавычки
в то время как 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, когда значение НЕ пустое, поскольку оно будет интерпретироваться как значение! = NULL (что ВСЕГДА будет ложным), поскольку Hibernate заставляет Oracle интерпретировать "" как NULL.
Так как же я могу сделать функцию независимой от платформы баз данных (потому что теперь мне нужно определить, какая база данных работает, PostgreSQL или Oracle)?
Или я чего-то совершенно не понимаю?