Когда я должен использовать @Basic (необязательно = false) в JPA 2.0 - PullRequest
6 голосов
/ 17 февраля 2011

У меня есть наследование с отображением в одну таблицу в JPA, скажем, классы A и B расширяют некоторую абстрактную сущность, поэтому я должен сделать столбцы из A & B обнуляемыми в конце БД, но если кто-то пытается сохранить A, тогда все поляA должен быть не нулевым, и я хочу обеспечить это кодом.Могу ли я использовать следующий код для достижения этой цели -

@Entity  
@DiscriminatorValue("1")  
public Class A extends SomeAbstractEntity{    
     @Basic(optional = false)  
     private String nameOfA;  
}

Я прочитал этот ответ @ Basic (необязательно = false) против @Column (nullable = false) в JPA и подумалэто может быть достижимо, но хотелось знать, как лучше.

1 Ответ

2 голосов
/ 17 февраля 2011

Это довольно забавно, но похоже, что в этом случае (с наследованием одной таблицы) @Basic(optional = false) не применяется Hibernate (хотя в других случаях он работает как положено).

Если это так, единственный способ применить это правило - использовать ограничение @NotNull из проверки bean-компонента JSR-303. JSR-303 плавно интегрируется с JPA 2.0, так что ограничения проверяются автоматически при сохранении сущностей, см. Hibernate Validator .

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