Запрос A совпадает с:
select 'true' where 3 = 1 or 3 = 2 or 3 = 3 or 3 = null
Так как 3 = 3
истинно, вы получаете результат.
Запрос B такой же, как:
select 'true' where 3 <> 1 and 3 <> 2 and 3 <> null
Когда ansi_nulls
включен, 3 <> null
НЕИЗВЕСТНО, поэтому предикат оценивает UNKNOWN, и вы не получите никаких строк.
Когда ansi_nulls
выключен, 3 <> null
истинно, поэтому предикат оценивает значение true, и вы получаете строку.
Если Вы захотите иметь тот же встраиваемый тип объекта дважды в том же объекте, установка по умолчанию имени столбца не будет работать: по крайней мере один из столбцов должен будет быть явным. Будьте в спящем режиме идет вне спецификации EJB3 и позволяет Вам улучшать принимающий значение по умолчанию механизм через NamingStrategy. DefaultComponentSafeNamingStrategy является маленьким улучшением по сравнению с EJB3NamingStrategy по умолчанию, который позволяет внедренным объектам быть принятыми значение по умолчанию даже если используемый дважды в том же объекте.
От В спящем режиме Документ Аннотаций: http://docs.jboss.org/hibernate/stable/annotations/reference/en/html_single/#d0e714