2014-06-14 89 views
1


我工作的一個Java項目上我的業餘時間,
我開始使用JPA 2.1和學習使用annotations一個HashMap。
我有一個類名爲Schedule,我要包含這個字段:
如何映射包含的ArrayList

private HashMap<LocalDate, ArrayList<Lesson>> theLessons 

課是在我的數據庫中的另一個實體,是LOCALDATE Java類。
這可能嗎?

我試圖將@OneToMany與@MapKey結合使用,就像在How do you map a "Map" in hibernate using annotations? 中一樣,但沒有任何效果。
我想,也許我需要創建其他Entities,以推動這項工作,就像也許ListOfLessons,將包含ArrayList<Lesson>爲了縮短HashMap到:

private HashMap<LocalDate, ListOfLessons> 

任何幫助,歡迎

+0

你是怎麼想到這個存儲在數據庫中?什麼表,列? –

+0

@Neil Stockton:那麼這就是問題所在,我沒有太多設計數據庫的經驗。我不介意它是如何保存的,我只是想獲得這些信息 – Dimitris

+0

您需要了解並繪製localDate,schedule和Lesson之間的關係。爲什麼一個特定的localDate有一個與之相關的課程列表,以及什麼是localDate? ListofLessons將有LocalDate和一個1:m的Lessons列表 – Chris

回答

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'字段名爲theDate被用作在課堂上圖例Schedule

1

只需創建一箇中間的「實體」並擁有一個Map(如你推測的那樣),你會在任何正派的JPA文檔中找到它。