有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何映射包含ArrayList的HashMap


我在业余时间做一个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) 个答案

  1. # 1 楼答案

    只要创建一个中间的“实体”,并有一个地图(正如你所设想的),你就会在任何像样的JPA文档中找到它

  2. # 2 楼答案

    我所做的似乎很好:

    @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<>();
    ...
    }
    

    请注意,名为theDateListOfLessons字段用作类Schedule
    中的映射键