Hi,

since Filter Extension wont work as discussed, i wanted to use MethodQL as explained in Chapter 9 Section 5. I used mainly the same stuff explained in the docs:

---

OpenJPAEntityManager oem = OpenJPAPersistence.cast(emf);
OpenJPAQuery q = oem.createQuery("openjpa.MethodQL", "com.xyz.Finder.getByName");

// set the type of objects that the method returns
q.setResultClass(Person.class);

// parameters are passed the same way as in standard queries
q.setParameter("firstName", "Fred").setParameter("lastName", "Lucas");

// this executes your method to get the results
List results = q.getResultList();

---

First of all, when doin this, i am getting a complaint on parameters like that:

<openjpa-1.2.0-r422266:683325 nonfatal user error> org.apache.openjpa.persistence.ArgumentException: The parameter name or position "firstName" passed to execute() is not valid. All map keys must be a declared parameter name or a number matching the parameter position. Native queries only allow the use of positional parameters.


Then i tried positional parameters like setParameter(1, "foo");

With that there is no exceptiom but the params parameter of the method signature s empty!

public static ResultObjectProvider fooMethod(StoreContext ctx, ClassMetaData meta, boolean subclasses, Map params, FetchConfiguration fetch);

Besides all this, i am wondering how to trigger the in-Memory Method exaplained in the docs later on. The method here has a different signature but somehow i must tell the query to use in-memory right? Otherwise the framework will always call the method siganture i showed above.

So right now i am not being able to somehow reimplement my custom filter extension i used with Kodo back then. MethodQL was my only hope to solve all this. Please comment on these bugs.... if they are bugs but i dont know how to do something wrong here....

Marc


Reply via email to