我正在使用Hibernate来存储数据模型,该模型有许多简单的字段:
@Entity
public class Shape extends DomainObject {
@LazyCollection(LazyCollectionOption.FALSE)
@CollectionOfElements()
private List<Shape> children;
@Column
private int numSides;
... etc. ...
}
DomainObject
超类跟踪Long id
。
我们想对children
List
进行更改,以便它不是一个简单的List
,而是一个Map
,其中的关键是Long id
(来自超类)。
@???
private Map<Long, Shape> children;
如何在Hibernate中处理此性质的迁移/类型更改?我不太熟悉Hibernate的这个方面 - 是否有一些方法可以重载以接受List<Shape>
(在应用程序的第一次加载时,使用旧数据)并执行新的手动生成Map
?
答案 0 :(得分:2)
数据库应该没有任何区别:您只需选择使用Map而不是List来存储Shapes,但Shape实体的属性保持相同,因此存储形状的表也具有相同的列。