добавление автоматически сгенерированной отметки даты / времени в сопоставленную коллекцию строк (аннотации в спящем режиме) - PullRequest
0 голосов
/ 09 июля 2009

Я использую аннотации для сопоставления базовой коллекции строк с существующей сущностью, подобной этой. Внутри класса родительской сущности:

@org.hibernate.annotations.CollectionOfElements
@JoinTable (name="GoalToAchieve_entry", joinColumns=@JoinColumn(name="goalToAchieve_id"))
@org.hibernate.annotations.Sort(type = org.hibernate.annotations.SortType.NATURAL)
private SortedSet<String> entries = new TreeSet<String>();

Это отлично работает. У меня есть таблица с двумя столбцами (goalToAchieve_id и element), полученные в результате объединения. Поэтому мне было интересно, как я могу добавить метку даты / времени (автоматически сгенерированную MySQL) для каждой строки коллекции. Чтобы я мог отображать 3-й столбец с отметкой времени каждый раз, когда в коллекцию добавляется новая строка? Цель состоит в том, чтобы использовать коллекцию простых объектов (строк) и не создавать целую новую сущность (с полем времени / даты).

Есть ли рекомендуемый способ сделать это? Я считаю, что даже если я предоставлю поле метки времени в интерфейсе jsp, которое обрабатывает добавление новых строк в коллекцию, это все равно будет проблемой гибернации, поскольку мне нужно, чтобы эта метка времени сохранялась в БД.

Заранее спасибо за любую помощь.

С наилучшими пожеланиями

1 Ответ

1 голос
/ 09 июля 2009

Hibernate @CollectionOfElements может использоваться не только с простыми типами. Вы можете определить класс, который содержит два поля, ваше значение String и временную метку, и пометить этот класс с помощью @Embeddable. После этого Hibernate сохранит это в базе данных в виде двух отдельных столбцов данных. Этот класс не представляет сущность, а представляет собой составной тип значения.

Следующая проблема - как вы генерируете эту временную метку. Вы можете сделать это в Java, с инициализированным значением поля по умолчанию, равным "new Date()" (или любым другим).

...