2009-07-09 1 views
0

Я использую аннотации для сопоставления базовой коллекции строк с существующей сущностью, подобной этой. Внутри класса родительской сущности:добавление автоматической сгенерированной даты/метки времени в сопоставленную коллекцию строк (аннотации спящего режима)

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

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

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

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

сердечного привет

ответ

1

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

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

+0

Спасибо! Я думал больше о том, как использовать @Temporal. Считаете ли вы, что в этом случае можно было бы создать новую временную метку с каждой новой вставкой значения String? – denchr

+0

Да, это должно сработать, я думаю. Я никогда не использовал сам @Temporal, и его поведение не выглядит хорошо документированным, но оно выглядит удобно. – skaffman