2013-03-24 8 views
0

У меня есть два класса инвертора и Вход, где инвертор имеет множество журналов (1: N). Каждый журнал является атрибутом timestamp.JPA один-ко-многим запросов

Когда я запрашиваю инвертор, я получаю все журналы с помощью «Inverter.getLog()», это нормально.

Однако, я хочу, чтобы создать запрос, который возвращает инвертор, только с выбранным Logs:

select t from Inverter t, Log l WHERE t.id = :id AND l.timestamp >= :date 

Это дает мне целую кучу результатов, однако я хочу, чтобы получить 1 инвертор в качестве результата с помощью журналов .timestamp> =: date

Возможно ли это?

ответ

2

В запросе запрашиваются все инверторы и журналы, удовлетворяющие критериям, без какого-либо соединения между ними.

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

я бы просто использовать em.find(), чтобы получить инвертор по идентификатору, и следующий запрос, чтобы получить все свои журналы, удовлетворяющие критериям:

select log from Inverter inverter 
inner join inverter.logs log 
WHERE inverter.id = :id AND log.timestamp >= :date 

И я хотел бы создать объект, содержащий преобразователь и его частичный список журналы.

Смежные вопросы