Пустая строка в спящем режиме для ограничения равенства для PostgreSQL 8.3 и Oracle 11g - PullRequest
2 голосов
/ 01 апреля 2011

Расширение на Как 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)?

Или я чего-то совершенно не понимаю?

1 Ответ

2 голосов
/ 01 апреля 2011

Используйте nullif(val, '') при сохранении значений, чтобы заставить Postgres вести себя как Oracle

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...