Аннотация @Embeddable
позволяет указать класс, экземпляры которого хранятся как внутренняя часть объекта-владельца. Эта аннотация имеет без атрибутов .
@Embeddable
public class EmploymentPeriod {
java.util.Date startDate;
java.util.Date endDate;
...
}
Аннотация @Embedded
используется для указания постоянного поля или свойства объекта, значение которого является экземпляром встраиваемого класса. По умолчанию определения столбцов, указанные в классе @Embeddable
, применяются к таблице объекта-владельца, но вы можете переопределить их , используя @AttributeOverride
:
@Embedded
@AttributeOverrides({
@AttributeOverride(name="startDate", column=@Column(name="EMP_START")),
@AttributeOverride(name="endDate", column=@Column(name="EMP_END"))
})
public EmploymentPeriod getEmploymentPeriod() { ... }
Что касается необязательной аннотации @Basic
, вы можете использовать ее, чтобы настроить тип выборки на LAZY
и настроить отображение на запрещение пустых значений (для не примитивных типов) с атрибутом optional
.
@Basic(fetch=LAZY)
protected String getName() { return name; }
Вы также можете поместить его в поле или свойство, чтобы явно пометить его как постоянный (для целей документации).