-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Hello Kevin,

We are using the current stable version of Geronimo AS.
Yes, we are pre-enhancing your Entities.

We now solved (or worked-around) the problem by inserting the following in our 
persistence.xml:
<property name="openjpa.MetaDataFactory"
value="jpa(Types=net.uniopt.domain.actual.ActualAction;...;net.uniopt.domain.usrmngmt.LoginUser)"/>

Hope this helps catching the bug.

Michael

Kevin Sutter schrieb:
> Hi Michael,
> I see that you are running with 1.2.x of OpenJPA, so that's good.  I thought
> that the problem you are describing was resolved eons ago.  It's one that I
> hit very early on in my tenure with OpenJPA.  So, either the problem still
> has a window associated with it, or it was accidentally re-introduced.
> 
> The problem is that the metadata associated with the Entities in the query
> is not populated yet.  You are forcing this metadata to get populated by
> doing one of your tricks (doing a find before the query, for example).
> 
> As I think about it more, maybe the "window" still exists in an application
> server, but the original problem was resolved in standalone JSE mode.  Not
> sure.  What application server are you using?  Does it provide the necessary
> hooks for a JPA provider so that OpenJPA can properly enhance the classes at
> startup?
> 
> I did a quick search in our JIRAs and found this one [1].  But, this seems
> to be related to MappedSuperClasses and it seems to also fail in JSE.
> 
> There are also several postings to our forums with similar results [2], but
> I'm not sure if these are the exact same scenario as yours.  Are you
> pre-enhancing your Entities?  Or, are you relying on the container hook to
> do the dynamic enhancing?  Or, are you relying on the runtime enhancement
> (also known as sub-classing)?
> 
> More questions than answers, but I really thought this issue was resolved a
> long time ago...
> Kevin
> 
> 
> [1]  https://issues.apache.org/jira/browse/OPENJPA-1043
> [2]
> http://n2.nabble.com/Starting-OpenJPA-during-container-startup-td210725.html#a210725
> 
> http://n2.nabble.com/RE%3A-Problem-with-openjpa-enhancer---using-runtime-enhancement-td1608390.html#a1608390
> 
> On Mon, May 25, 2009 at 7:29 AM, Michael Simons
> <[email protected]>wrote:
> 
>> Hi,
>>
>> I've encountered a strange little problem here... When I do the
>> following locally (in a simple application, not connected to an
>> Application Server)...
>>
>> Query query =  em.createQuery("select u from LoginUser u where u.login =
>> :loginname and u.passwd = :pass"); //$NON-NLS-1$
>> //... setting Parameters...
>> LoginUser user = null;
>> try {
>>        user = (LoginUser)query.getSingleResult ();
>> } catch (NoResultException noResult) {
>>        System.err.println("NoResult");
>> }
>>
>> ... it works fine, it'll get me the correct "LoginUser" object. But when
>> I try the same thing in a stateful EJB, the problems start. I'll get the
>> following error:
>>
>> <openjpa-1.2.1-r752877:753278 nonfatal user error>
>> org.apache.openjpa.persistence.ArgumentException: An error occurred
>> while parsing the query filter "select u from LoginUser u where u.login
>> = :loginname and u.passwd = :pass". Error message: The name "LoginUser"
>> is not a recognized entity or identifier. Known entity names: []
>>
>> Funny thing, if I call something like...
>>
>> LoginUser user = (LoginUser)em.find(LoginUser.class, 1);
>>
>> ...before trying to create the query above, the whole thing will
>> suddenly work, LoginUser seems to become a recognized Entity (which also
>> shows, that my classes are correctly enhanced, that the EntityManager
>> knows them correctly, etc.). It seems, that even though the
>> EntityManager "knows" the LoginUser Entity (because I can "em.find(...)"
>> it), it doesn't recognize it in a query.
>>
>> If I cast the Query to OpenJPAQuery and there set the ResultClass...
>>
>> if (query instanceof OpenJPAQuery) {
>>        OpenJPAQuery opq = (OpenJPAQuery)query;
>>        opq.setResultClass( LoginUser.class );
>> }
>>
>> ...it suddenly seems to work. The big question is: Why is this needed?
>> Is there a setting I can put into the (OpenJPA)EntityManager, that it
>> will automatically recognize all of its entities in queries? Or do I
>> really have to cast to OpenJPAQuery everytime I do a query?
>>
>> Regards,
>>
>> Michael (The original author Florian did not get a response from the list,
>> after
>> subscription-verification)
>>
>>
> 

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.7 (MingW32)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iD8DBQFKHCNx5aNR/9BakrgRAoRaAJ9j0zMzQ27KXLy/9XnwexR0Oz9AtwCdFVLK
B7tHzJkC1V/zYjJTyWJUGCU=
=bRbu
-----END PGP SIGNATURE-----

Reply via email to