среда, 22 июня 2011 г.

Ещё 1 проблема автобоксинга


Историческое превью:
Так уж повелось, что Long и long - совершенно разные вещи с абсолютно разным поведением. Ну всякие там возможности/невозможности хранить null-значения, корректность сравнения через оператор == и т.п. В java 1.5 появилась такая фича как автобоксинг. То есть теперь свободно можно писать нечто в стиле:
Long l = 4L;
if (l != 10L) {...}

В то время как раньше приходилось пользовать такой код:
Long l = new Long(4L);
if (l.longValue() != 10L) {...}

По сути, автобоксинг - автоматическое преобразование между классами и примитивными типами. Работает как в одну, так и в другую сторону.

пятница, 3 июня 2011 г.

CriteriaBuilder. Проблема в count-запросе сущностей с составным первичным ключом

Проблема:
Если запрос строится на Criteria API, то существует баг, воспроизводимый при попытке count-запроса для сущности с составным первичным ключом (composite primary key).
Ошибка при этом звучит так:
Caused by: java.sql.SQLException: ORA-00907: missing right parenthesis