Как фильтровать сущности по их родителям на стороне ManyToOne в Google App Engine - PullRequest
4 голосов
/ 13 июня 2010

Я использую Google App Engine.Когда я пытаюсь выполнить запрос JPA следующим образом:

SELECT p FROM Participant p 
WHERE p.party.id = :partyKey AND p.name=:participantName 

я получаю следующую ошибку

Caused by: org.datanucleus.store.appengine.FatalNucleusUserException: 
SELECT FROM Participant p WHERE p.party.id = :partyKey AND p.name=:participantName: 
Can only reference properties of a sub-object if the sub-object is embedded.

Я передал ключ объекта Party в качестве параметра для partyKeyименованный параметр.

Модель выглядит следующим образом: у партии несколько участников.

Я хочу запросить участника на основании партии и имени участника.Я просто не могу понять, как фильтровать, используя вечеринку.Какие варианты у меня есть?

Я также пробовал следующий запрос:

SELECT FROM Participant p 
WHERE p.party = :party AND p.name=:participantName

, но это приводит к следующей ошибке:

Caused by: org.datanucleus.store.appengine.FatalNucleusUserException: 
SELECT FROM Participant p WHERE p.party = :party AND p.name=:participantName: 
Key of parameter value does not have a parent.

1 Ответ

3 голосов
/ 13 июня 2010

Вы можете выполнять запросы предков, объявив поле parent-pk. Затем вы можете отфильтровать дочерний объект, используя это поле. Проверьте часть о "parent-pk" в документации обязательно прочитайте это обсуждение ).

Обновление: Для JPA кажется, что вы объявите это так:

@Extension(vendorName="datanucleus", key="gae.parent-pk")
private Long parentId;

Вы также можете прочитать Запрос с ключевыми параметрами сообщение в блоге.

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