jpa 使用Hibernate和Spring持久化键为实体的Map

1aaf6o9v  于 2023-02-19  发布在  Spring
关注(0)|答案(1)|浏览(153)

刚接触Hibernate,我想持久化一个散列表,其中的键是另一个实体,我看了很多在线文章和类似的问题,所有这些都产生了某种形式的IllegalStateException。
以下是我目前拥有的:

@Entity
public class SecondClass extends DomainObject {
    
    @Id
    @GeneratedValue
    private Long id;

    @OneToMany ( cascade = CascadeType.ALL, fetch = FetchType.EAGER )
    @ElementCollection
    @MapKeyClass ( MyEntity.class )
    private final Map<MyEntityClass, Integer> myMap;
}

我在Hibernate方面太缺乏经验,不知道问题是什么或者如何解决它。任何帮助都将不胜感激。

2wnc66cl

2wnc66cl1#

根据JPA WikiBook,您可能需要使用@MapKeyJoinColumn来指定用于连接两个实体的列,我也不认为您希望@OneToMany@ElementCollection用于同一个关系。
例如,这应该工作:

@Entity
public class SecondClass extends DomainObject {
    
    @Id
    @GeneratedValue
    private Long id;

    @ElementCollection
    @MapKeyJoinColumn(name = "MY_ENTITY_ID")
    private final Map<MyEntityClass, Integer> myMap;
}

相关问题