Я изучаю Hibernate, и я застрял с аннотациями. У меня есть предмет POJO:
@Entity
public class Item implements Serializable {
@Id
@GeneratedValue
@Column
protected Integer id;
@Column
protected State state;
@ElementCollection
protected Map<Locale, ItemBody> localization = new EnumMap<Locale, T>(Locale.class);
...
}
Локаль - это перечисление из четырех пунктов:
public enum Locale {
cs, en, de, fr, es
}
ItemBody:
public class ItemBody implements Serializable {
@Column(length = 256)
protected String name;
@Column(columnDefinition = "text")
protected String description;
@Column(columnDefinition = "text")
protected String excerpt;
...
}
Я использую его как ключ для прикрепления переводов текстов для Item.
В идеале Hibernate генерирует два класса:
Item (id, state)
ItemBody (item_id, localization_KEY, name, description, excerpt)
где item_id и localization_KEY образуют вместе первичный ключ.
В результате Hibernate генерирует:
Item (id, state)
ItemBody (item_id, localization, localization_KEY)
где локализация имеет тип Bytea и представляет собой сериализацию всех строк в ItemBody вместо перечисления всех строк. Я буду признателен за любые предложения о том, что я делаю неправильно.
Спасибо!