Play Framework JPA-запрос для вложенного объекта недоступен - PullRequest
0 голосов
/ 19 июля 2011

У меня есть три объекта, которые связаны друг с другом.

@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 к автомобилям и клюшкам, но это тоже не помогло.

Также, если я найду автомобиль, я смогу найти клуб, и наоборот. Просто в этом запросе я не могу его найти. Объекты модели упрощены, но должны предоставить достаточно информации, чтобы объяснить мою проблему.

Любые идеи, почему я не могу делать запросы на основе вложенного объектного клуба?

1 Ответ

1 голос
/ 19 июля 2011

Я не уверен насчет "волшебной" игры!добавляет к частичным запросам, но этот запрос Hibernate должен работать

select b from Booking b left join b.car car left join car.club club where b.startTime > :startTime and b.endTime < :endTime and club = :club

Обратите внимание, что мы используем левое (внешнее) соединение, что означает, что даже если машины нет, мы должны получить результаты

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...