«not-null» не является условным ограничением. Либо ваши свойства (addressType
/ contact
) ВСЕГДА обязательны для заполнения, в этом случае вы указываете их как not-null="true"
, либо они не являются.
«Иногда» совпадает с «не требуется». Если вам нужно выполнить условную проверку (например, во время вставки, но не во время обновления или на основе какого-либо другого состояния сущности), вы можете сделать это в своем коде до вызова методов сеанса или написать обработчик событий или перехватчик , чтобы сделать это за вас.
Тем не менее, удаление является особым случаем. session.delete()
удаляет сохраненную сущность, что означает, что она уже была проверена и имеет свойства не равными NULL. Если вы хотите удалить по идентификатору (то есть у вас нет объекта, загруженного в сеансе), вы можете использовать session.load()
, чтобы получить его прокси:
Address toBeDeleted = (Address) session.load(Address.class, id);
session.delete(toBeDeleted);
В любом случае, я не совсем уверен, что вы подразумеваете под "Я должен также указать контакт и тип адреса из-за ненулевого значения" в случае удаления. Вы не - они уже установлены; они были указаны при сохранении сущности.