在Hibernate实体中更改字段类型?

时间:2012-02-07 18:50:32

标签: java hibernate list map h2

我正在使用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

1 个答案:

答案 0 :(得分:2)

数据库应该没有任何区别:您只需选择使用Map而不是List来存储Shapes,但Shape实体的属性保持相同,因此存储形状的表也具有相同的列。