Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [eclipselink-users] Unexpected Queries

Hello Tom,

with the javaagent there's an exception thrown (see own message), so I'll try the static weaving.

Kind Regards, Michael

Tom Ware schrieb:
> Hi Michael,
> 
>   If Geronimo is actually JEE 5 compliant, weaving should happen
> automatically.   To be honest, I've never tried EclipseLink on Geronimo,
> but a quick search of the wiki site yields a pointer to how to developer
> JPA applications in Geronimo.   I think there is a pretty good chance it
> will work automatically.
> 
>   If it does not work automatically, whether the agent will work depends
> on how Geronimo does class loading.  The agent is used to take an
> advanced look at the entities in your persistence unit (before they are
> loaded by the classloader). For most application servers, JEE
> applications are loaded in their own classloader space, and that
> precludes the agent from working since the entities are not even
> available to the classloader that loads the application server itself. 
> In that case, static weaving is the way to go.
> 
> -Tom
> 
> Michael Simons wrote:
>> Thanks Tom,
>>
>> we are porting a 2tier application to 3tier in multible steps.
>> Therefore parts are already
>> running on Geronimo (JEE complinat) while other parts are still Java SE.
>>
>> Do I guess right when assuming the weaving with a java agent also
>> works for Geronimo?
>> Should I post this question on the Geronimo users mailing list?
>>
>> Kind Regards, Michael
>>
>> Tom Ware schrieb:
>>> Hi Michael,
>>>
>>>   Are you running in an application server, or in Java SE?
>>>
>>>   In EclipseLink LAZY xToOne mappings are implementated using weaving,
>>> so depending on your deployment strategy, you may have to do some
>>> configuration.
>>>
>>> - In you are in a Java EE compliant application server, everything
>>> should work automatically
>>> - If you are in Java SE, you should run with a java agent
>>> - If you are in a non Java EE compliant server, you should use static
>>> weaving
>>>
>>>   Here are some docs about weaving:
>>>
>>> http://wiki.eclipse.org/Using_EclipseLink_JPA_Extensions_%28ELUG%29#Using_EclipseLink_JPA_Weaving
>>>
>>>
>>>
>>> -Tom
>>>
>>> Michael Simons wrote:
>>>> Hello,
>>>>
>>>> Assume the following part of our model
>>>> Scenario (N:1) LoginUser (N:1) Language
>>>> No attribute is marked "FetchType.EAGER" but all are "LAZY".
>>>>
>>>> My test program does the following JPQ:
>>>>   Query q = em.createQuery ("select s from Scenario s where s.id = 1");
>>>>   Scenario scenario = (Scenario)q.getSingleResult ();
>>>>
>>>> But EL generates the following queries:
>>>>   SELECT scenario_id, creation_date, vrsion, nme, ext_id, alt_ex_id,
>>>> jdo_version, login_user_id
>>>>   FROM scenario WHERE (scenario_id = 1);
>>>>
>>>>   SELECT login_user_id, passwd, mail, phone, alias, nme, login,
>>>> lnguage_id, sales_office_id
>>>>   FROM login_user WHERE (login_user_id = 1);
>>>>
>>>>   SELECT lnguage_id, nme, abbreviation FROM lnguage WHERE (lnguage_id
>>>> = 1);
>>>>
>>>> So for a reason I don't know of, EL descides to load the "owner"
>>>> (login_user) of the scenario as
>>>> well as the "language" (lnguage_id) of that user.
>>>>
>>>> EL behaves the same on other JPQL-Queries, that leads to a problem,
>>>> because every line is
>>>> selected in a single statement. So this leads to a mass of SQL
>>>> statements.
>>>>
>>>> My persistence.xml:
>>>>   <persistence-unit name="otee" transaction-type="RESOURCE_LOCAL">
>>>>    
>>>> <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
>>>>     <exclude-unlisted-classes>true</exclude-unlisted-classes>
>>>>                <class>net.uniopt.domain.config.Scenario</class>
>>>>         <class>net.uniopt.domain.sys.Language</class>
>>>>         <class>net.uniopt.domain.usrmngmt.LoginUser</class>
>>>>
>>>>     <properties>
>>>>       <property name="javax.persistence.jdbc.driver"
>>>> value="com.mysql.jdbc.Driver"/>
>>>>       <property name="javax.persistence.jdbc.url"
>>>> value="jdbc:mysql://smithers:3306/ot_diermeier_324"/>
>>>>       <property name="javax.persistence.jdbc.user" value="otcs"/>
>>>>       <property name="javax.persistence.jdbc.password" value="otcs"/>
>>>>       <property name="eclipselink.persistence-context.flush-mode"
>>>> value="Commit" />
>>>>       <!-- To print SQL statements  -->
>>>>       <property name="eclipselink.logging.level" value="FINE" />
>>>>     </properties>
>>>>
>>>>   </persistence-unit>
>>>>
>>>>
>>>> Any hint is appreciated.
>>>>
>>>> Kind Regards, Michael
>>>> _______________________________________________
>>>> eclipselink-users mailing list
>>>> eclipselink-users@xxxxxxxxxxx
>>>> https://dev.eclipse.org/mailman/listinfo/eclipselink-users
>>> _______________________________________________
>>> eclipselink-users mailing list
>>> eclipselink-users@xxxxxxxxxxx
>>> https://dev.eclipse.org/mailman/listinfo/eclipselink-users
>>>
>>
>> _______________________________________________
>> eclipselink-users mailing list
>> eclipselink-users@xxxxxxxxxxx
>> https://dev.eclipse.org/mailman/listinfo/eclipselink-users
> _______________________________________________
> eclipselink-users mailing list
> eclipselink-users@xxxxxxxxxxx
> https://dev.eclipse.org/mailman/listinfo/eclipselink-users
> 



Back to the top