On 21 November 2014 13:26, Nobby Knox <no...@ecn.co.za> wrote: > Hi everyone, > > > I'm tying to implement a filter in a JDOQL query using a cached entity in > the where clause, but I'm having some trouble. Here is a quick run down of > my domain models: > > > << Owner >> > > + name > > + etc > > > << Pet >> > > + name > > + Owner (<- Owner model from above) > > > In my Pet domain model I have a reference to the Owner object, which I > cache in order to implement future filtering. The problem is that the > original Owner object seems to be some kind of proxy for the actual Owner > object.
It's not a proxy, instead the DataNucleus enhancer modifies the bytecode. There's a simplified description on the Apache JDO website [1]. > When I save the object in the cache, something weird happens and the > properties are set to null. > > That happens when the request (ie JDO persistence session) completes. JDO itself does have various support to allow entities to be detached [2], but we don't surface that as API within Isis > > Is there a way to use a simple POJO (not the enhanced proxy object) in the > where clause in order to implement the filter? Maybe there is another way > to do this? Should I be looking at caching the actual ID (integer value) > and changing the where to something like: where owner_id_OID = :cachedId > > Basically, yes, you need to store the identifier for the pojo. One way to do that (in a very general way) is to use Isis' BookmarkService [3]; use BookmarkService#bookmarkFor(...) to obtain a serializable Bookmark, and BookmarkService#lookup to convert back to the pojo. HTH Cheers Dan [1] http://db.apache.org/jdo/enhancement.html [2] https://db.apache.org/jdo/attach_detach.html [3] http://isis.apache.org/reference/services/bookmark-service.html > > I hope this makes sense. > > > ?Kind regards, > > Nobby > > > Nobby Knox > Senior Developer > > > [http://static.ecntelecoms.za.net/images/ecn-logo.png] > > Unit 10 Growthpoint Business Park > 2 Tonnetti Street, Midrand, 1685 > Office: +27 10 590 6843 > Cell: +27 82 459 1604 > > no...@ecn.co.za > www.ecn.co.za<http://www.ecn.co.za/> > > > This email is sent subject to the terms and conditions detailed in the > ECN Email Disclaimer< > http://www.nashuacommunications.com/disclaimer-and-confidentiality-note/> > > Disclaimer > > The information contained in this communication from the sender is > confidential. It is intended solely for use by the recipient and others > authorized to receive it. > If you are not the recipient, you are hereby notified that any disclosure, > copying, distribution or taking action in relation of the contents of this > information is strictly prohibited and may be unlawful. > > This email has been scanned for viruses and malware.