我对 Hibernate 很陌生,所以我不完全确定我想要做的事情是否可能(或正确的事情)所以如果不是,请随意提出其他方法来实现我正在寻找的东西。
我有 2 个实体,竞争和夹具。它们之间存在一对多的关系。我知道如何设置注释来实现这一点,但我正在努力使关系成为双向的。如果我的应用程序要运行很长时间,属于比赛的灯具数量会增加。我将访问 Fixture 对象的最常见方式是通过竞赛指定特定日期(例如 getFixtures(today))。我想我可以通过在 Competition 类中有一个 Map 来实现这一点,该 Map 将 Fixture 的日期映射到该日期的 Fixtures 集合。我不知道如何在 Hibernate 中设置它。
这是一组简化的 POJO 和注释,说明了我到目前为止所拥有的内容:
@Entity
public class Competition {
// This is what I would like to have.
private Map<Date, Collection<Fixture>> fixtureMap;
public Collection<Fixture> getFixtures(Date day) {
return fixtureMap.get(day);
}
// This is all I know how to do.
private Collection<Fixture> fixtureList;
@OneToMany(mappedBy = "competition")
public Collection<Fixture> getFixtureList() {
return fixtureList;
}
}
@Entity
public class Fixture {
private Competition competition;
@ManyToOne
public Competition getCompetition() {
return competition;
}
}
正如你所看到的,我可以设置关系来访问整个比赛的夹具。但是要获得特定日期的夹具,我必须遍历整个夹具集合并检查每个夹具的日期。有什么方法可以让 Hibernate 处理从日期到夹具集合的映射?如果我能做到这一点,那么我将能够使用 Date 作为 Map 中的键来简单地访问当天的 Fixtures 集合。