[英]Mapping a Map<String,List<Foo>> in Hibernate
考慮以下對象:
Keyword{
int id;
String area;
String keyword;
Article article;
}
在Hibernate中映射以下關聯的最佳方法是什么,映射的鍵應為Keyword.area:
Article{
private Map<String,List<Keyword>> keywords = new HashMap<String, List<Keyword>>();
}
如果它是Map,這很簡單,但是在這種情況下,我將最需要按區域訪問關鍵字(例如,article.findAll(“ science”)以返回所有科學關鍵字)。
到目前為止,我最好的想法是將前者轉變為
private Map<String,KeywordGroup> keywords = new HashMap<String, KeywordGroup>();
但這給我留下了一些問題,例如:
您會建議哪種方法?
我認為以下Article的實現將為您工作,而無需使用Map。
@Entity
public class Article {
@OneToMany(mappedBy="article")
private Set<Keyword> keywords;
//..
public Set<Keyword> findKeywordsByArea(String area) {
Set<Keyword> matchingKeywords = new HashSet<Keyword>();
for(Keyword keyword : this.keywords) {
if(keyword.getArea().equals(area)) {
matchingKeywords.add(keyword);
}
}
return matchingKeywords;
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.