Я совершенно новичок в Hibernate, поэтому я не совсем уверен, возможно ли то, что я хочу сделать (или правильно), поэтому, если это не так, не стесняйтесь предлагать другие способы достижения того, что я ищу для.
У меня есть 2 сущности: соревнование и приспособление. Между ними существует связь «один ко многим». Я знаю, как настроить аннотации для достижения этой цели, но я борюсь с тем, чтобы сделать отношения двунаправленными. Если бы мое приложение работало в течение длительного времени, количество приборов, принадлежащих соревнованию, увеличилось бы. Самый распространенный способ получения доступа к объектам Fixture - через соревнование, указав определенную дату (например, getFixtures (сегодня)). Я думал, что смогу реализовать это, имея карту в классе Соревнования, которая отображает дату Крепления на коллекцию Креплений на эту дату. Я не знаю, как настроить это в 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;
}
}
Как вы можете видеть из этого, я могу установить отношения, чтобы получить доступ ко всему набору приборов для соревнования. Но чтобы получить Fixtures на определенный день, мне нужно было бы перебрать всю коллекцию Fixtures и проверить даты каждого. Есть ли какой-нибудь способ, которым я могу заставить Hibernate обрабатывать отображение из Date в Collection of Fixtures? Если бы я мог это сделать, то я мог бы просто получить доступ к коллекции приборов на этот день, используя дату в качестве ключа на карте.