考虑以下对象:
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(&#34; science&#34;)以返回所有科学关键词)。
我迄今为止最好的想法是将前者转变为
private Map<String,KeywordGroup> keywords = new HashMap<String, KeywordGroup>();
但是这给我留下了一些问题,比如:
您会建议采用什么方法?
答案 0 :(得分:0)
我认为以下条款的实施对你有用,而不需要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;
}
}