如何编辑,添加和删除集合中的瞬态实体?

时间:2013-12-10 09:07:37

标签: java hibernate

我觉得必须是一个常见问题:我有一个Communication对象,用于描述与Person进行通信的方式。当然,我在数据表中显示一个人Set<Communication>的实例。我希望最终用户能够动态地添加和删除此表中的行。

两个对象通常根据其数据库PK使用equals()hashCode()。 PK由postgresql序列生成(列为serial类型)。这还不够,因为我只能用null PK添加一个(瞬态)元素。

hibernate manual提供的唯一选择是在业务等效方面实现equals和hashCode。由于Communication对象基本上是一个美化的String,这是不可能的。用户需要编辑对象的每个方面。

我考虑过创建一个序列服务,为瞬态实体“保留”id,并在创建时将其分配给对象。但我担心这会干扰Hibernate确定实体是否是瞬态的能力。

所以问题是:当我无法提供业务密钥时,是否有更好的选项来编辑,添加和删除瞬态对象?

1 个答案:

答案 0 :(得分:0)

暂时忘掉休眠。您正在讨论向集合添加元素,并且它们根本没有标识,因为所有属性都可能被修改且它们没有标识符。那是错的。集合用于可识别的元素。使用列表或使元素可识别。您可以为它们分配一个时间ID或一个真实的数据库ID或其他什么,但问题不在于Hibernate,它与Set的概念有关。