将自动生成的日期/时间戳添加到映射的字符串集合(休眠注释)

时间:2009-07-09 16:47:59

标签: mysql hibernate annotations timestamp

我正在使用注释将字符串的基本集合映射到这样的现有实体。在父实体类中:

@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>();

这很好用。我有一个由连接产生的2列(goalToAchieve_id和元素)表。所以我想知道,如何在集合的每个字符串中添加日期/时间戳(由MySQL自动生成)。每次在集合中添加新String时,我都可以显示带有时间戳的第3列?目标是使用简单对象(字符串)的集合,而不必创建一个全新的实体(带有时间/日期字段)。

有推荐的方法吗?我相信即使我在jsp接口上提供了一个时间戳字段来处理向集合添加新字符串,它仍然是一个休眠问题,因为我需要在数据库上保留时间戳。

提前感谢您的帮助。

最诚挚的问候

1 个答案:

答案 0 :(得分:1)

Hibernate @CollectionOfElements不仅可以用于简单类型。您可以定义一个包含两个字段的类,String值和时间戳,并使用@Embeddable注释该类。然后,Hibernate会将其作为两个单独的数据列保存到数据库中。此类不代表实体,只是复合值类型。

下一个问题是如何生成该时间戳。您可以在java中执行此操作,字段的默认初始值为“new Date()”(或其他)。