Итак, я попробовал аннотацию @Basic (необязательно = false), используя JPA 2.1 (EclipseLink), и оказалось, что аннотация игнорируется при фактическом использовании (по крайней мере для поля String).(например, entityManager.persist вызывает).
Так что я пошел к спецификации и прочитал об этом.Вот что говорит спецификация:
http://download.oracle.com/otndocs/jcp/persistence-2.0-fr-oth-JSpec/
Basic (необязательно): может ли значение поля или свойства быть нулевым.Это подсказка и игнорируется для примитивных типов;он может использоваться при генерации схемы.
Так что я думаю, что это предложение объясняет реальный вариант использования Basic (необязательно), который используется при генерации схемы.(То есть: когда вы генерируете CREATE TABLE SQL из классов Java Entity. Это то, что Hibernate может сделать, например.)