У меня есть три объекта, которые связаны друг с другом.
@Entity
class Club extends Model
@OneToMany(cascade = CascadeType.ALL, mappedBy = "club")
public Set<Car> cars;
@Entity
class Car extends Model
@ManyToOne(cascade = CascadeType.PERSIST)
public Club club;
@Entity
class Booking extends Model
public Date startTime;
@ManyToOne(cascade = CascadeType.PERSIST)
public Car car;
public static Collection<Booking> bookingsForClubInPeriod(Club club, Date start, Date end){
return Booking.find("startTime > ? and startTime < ? and car.club = ?", start, end, club).fetch();
}
Я могу искать заказы, которые начинаются между два раза, но когда я добавляю car.club в запрос, я получаю ноль результатов.
Я также попытался изменить запрос на:
find ("startTime>? и startTime <? and car in?", start, end, club.cars), но безуспешно (это дало мне следующее сообщение: <i>Не удалось получить значение поля по методу отражения модели. Car.id
Другая попытка состояла в том, чтобы добавить FetchType.EAGER к автомобилям и клюшкам, но это тоже не помогло.
Также, если я найду автомобиль, я смогу найти клуб, и наоборот. Просто в этом запросе я не могу его найти.
Объекты модели упрощены, но должны предоставить достаточно информации, чтобы объяснить мою проблему.
Любые идеи, почему я не могу делать запросы на основе вложенного объектного клуба?