如何映射包含ArrayList的HashMap

时间:2014-06-14 07:08:37

标签: java jpa annotations eclipselink jpa-2.1


我在业余时间从事Java项目,
我开始使用JPA 2.1并学习使用annotations 我有一个名为Schedule的类,我想包含这个字段:

private HashMap<LocalDate, ArrayList<Lesson>> theLessons

Lesson是我的数据库中的另一个实体,LocalDate是Java类 这可能吗?

我尝试将@OneToMany和@MapKey组合在How do you map a "Map" in hibernate using annotations?中 但没有效果。
我想也许我需要创建其他Entities来促进这一点,例如ListOfLessons,它将包含ArrayList<Lesson>,以便将HashMap缩短为:

private HashMap<LocalDate, ListOfLessons>

欢迎任何帮助

2 个答案:

答案 0 :(得分:1)

只需创建一个中间体&#34;实体&#34;并且有一张地图(正如你所假设的那样),你会在任何体面的JPA文档中找到它。

答案 1 :(得分:0)

我所做的似乎工作正常:

@Entity
public class Schedule implements Serializable {
....
    @OneToMany
    @MapKey(name = "theDate")
    private Map<LocalDate, ListOfLessons> allLessons = new HashMap<>();
....
}
@Entity
public class ListOfLessons implements Serializable {
...
    private LocalDate theDate;
    @OneToMany
    private List<Lesson> allLessons = new ArrayList<>();
...
}

请注意ListOfLessons&#39;名为theDate的字段用作班级Schedule中的地图密钥