java - 更改 Hibernate 实体中的字段类型?

标签 java hibernate list dictionary h2

我使用 Hibernate 来存储数据模型,其中有许多简单的字段:

@Entity
public class Shape extends DomainObject {

    @LazyCollection(LazyCollectionOption.FALSE)
    @CollectionOfElements()
    private List<Shape> children;

    @Column
    private int numSides;

    ... etc. ...
}

DomainObject父类(super class)跟踪Long id .

我们想对 children 进行更改List ,这样就不再是简单的 List ,它实际上是一个Map其中关键是 Long id (来自父类(super class))。

@???
private Map<Long, Shape> children;

Hibernate 中如何处理这种性质的迁移/类型更改?我对 Hibernate 的这方面不太熟悉 - 是否有一些方法可以重载以接受 List<Shape> (在第一次加载应用程序时,使用旧数据)并手动生成新的 Map

最佳答案

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

关于java - 更改 Hibernate 实体中的字段类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9182032/

相关文章:

java - 相同对象的两个列表具有不同的哈希码

java - 对象的原始成员是在堆上还是在栈上?

java - 具有多个 Action 的形式?

java - Spring @Transactional 方法错误处理

java - JPA 延迟加载

java - 当加载 spring-boot 和 spring-data-jpa 时,Hibernate 无法加载 JPA 2.1 Converter

java - 如何在部署级别的 JPA persistence.xml 中指定不同数量的持久性单元

java - 在颜色之后对 arraylist 进行排序

list - 如何 append 到 Terraform 中的列表?

java - 从 Function App 访问 Cosmos DB 表