使用JPA注释</entity,>在hibernate中映射java.util.map <entity,entity =“”>

时间:2012-09-12 15:22:01

标签: hibernate jpa map annotations

我似乎遇到了在hibernate中映射集合的问题,其中密钥和资源都是由hibernate映射的实体。

然而,从文档(我这个问题的主要资源是这个,但我当然欢迎任何其他人:http://docs.jboss.org/hibernate/orm/3.6/reference/en-US/html/collections.html)看起来这应该是一个相对简单的任务,我似乎无法让地图的密钥持续存在。

我的代码如下所示:

家长班:

@Entity
public class Parent {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private int id;
    @MapKey
    @MapKeyClass(Key.class)
    @ManyToMany(cascade = CascadeType.ALL)
    private Map<Key, Resource> map;

关键课程:

@Table(name="ParentKey")
@Entity
public class Key implements Comparable<Key> {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private int id;
    @Column(name = "hierarchyKey")
    private int key;

资源类是一个相对简单的POJO并且持续存在,所以我认为该问题不在该类中。

我确实在hibernate论坛的一些文档中遇到了注释@MapKeyManyToMany,但我相信这已经被弃用了。

在这个阶段,数据库的架构并不重要,主要关注的是确保一切都持续存在于数据库中。我们将MySQL用于底层数据库。

我敢肯定你可以猜到,任何涉及单词map,hibernate,entity和key的搜索都会返回大量与此问题无关的问题,尽管我确定这种情况必定会发生。通常在映射情况方面。

我不经常提问,但我是一位活跃的读者,所以如果需要更多信息,请告诉我。

1 个答案:

答案 0 :(得分:1)

这符合规定。操作不会级联到地图的键。它们仅与值相关联。在documentation中,用以下词语告知:

  

当目标集合是java.util.Map时,是cascade元素   适用于地图值。

密钥必须单独保留。