我使用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“的参数。
模型是这样的: Party有多个参与者。
我想要根据参与者的参与方和名称来查询参与者。我就是想不出怎么用派对过滤。我有什么选择?
我还尝试了以下查询:
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.发布于 2010-06-13 23:09:29
您可以通过声明parent-pk字段来执行祖先查询。然后,您可以使用该字段过滤子对象。检查the documentation中关于"parent-pk“的部分(并确保 to this discussion)。
更新: For JPA,您似乎会这样声明它:
@Extension(vendorName="datanucleus", key="gae.parent-pk")
private Long parentId;您可能还想阅读Querying with Key parameters的博客文章。
https://stackoverflow.com/questions/3032406
复制相似问题