Hi All,

 

Thank you very much for paying attention to my problem. In spite of it
works with Hibernate, I don't like the idea to use another JPA and have
pretty many additional libs on board. I would like to fix the issue with
OpenJPA and use it since it's embedded in WebSphere server, at least.

 

The code is extremely simple and clear. Stateless bean just returns
query.getResultList() to struts2 action , which puts it in request
object for displaytag grid. The whole time spends in
query.getResultList() method.

I've tried once more to remove IFilterTO and Map from Account object,
but with no result. 

 

I put asterisks before and after  query.getResultList(), switched on
runtime trace, and attached result log. It's pretty detailed, with many
openjpa runtime parameters and actions, may be somebody will be able to
determine what is happening...

 

Database is ORACLE10, detailed version is present in attached log file -
openJPA determined it correctly. Tables are created automatically by
OpenJPA using the following property in persistence.xml :

      <properties>

         <property name="openjpa.jdbc.SynchronizeMappings"
value="buildSchema"/>

      </properties>

 

IFilterTO interface just has two methods , nothing special :

 

public interface IFilterTO {

 

   void setValue( String key, String value );

   String getValue( String key );

   

}

 

Thank you all in advance for your help.

Best regards, 
Mikhail V. Ostryanin
Sr.Developer/Analyst
UBS, Moscow 
Tel: +7 495 648 22 14 
[email protected] 

________________________________

From: Craig L Russell (via Nabble)
[mailto:[email protected]] 
Sent: Wednesday, July 15, 2009 10:45 PM
To: Ostryanin, Mikhail
Subject: Re: openJPA generates select per row - impossible to use for
simple select statements

 

Hi, 

Could I ask again what the code is doing, following the   
query.getResultList() ? 

Where is the list of results being used? Are the results being   
serialized or detached? 

Thanks, 

Craig 

On Jul 15, 2009, at 12:19 AM, om wrote: 


> 
> Hi All! 
> 
> I'm new in openJPA, and didn't manage to get over the problem with   
> simple 
> select statement for one object after a few days of investigation.   
> Please 
> help! 
> 
> For simple select from one object, OpenJPA ( same strategy for 1.0,   
> 1.2.1, 
> 2.0 ) fist generates right query to retrieve all rows and fields,   
> and then 
> start generating query per object by primary key. 
> 
> Code : 
>      StringBuffer queryBuf = new StringBuffer("SELECT a FROM Account

> AS a 
> WHERE a.date = :date "); 
>      PersistenceProviderImpl impl = new PersistenceProviderImpl(); 
>      OpenJPAEntityManagerFactory fac = 
> impl.createEntityManagerFactory("MainPersistence",   
> System.getProperties()); 
>      OpenJPAEntityManager man = fac.createEntityManager(); 
> 
>      Query query = man.createQuery(queryBuf.toString()); 
>      query.setParameter("date", reportDate); 
>      List res = query.getResultList(); 
> 
> 
> LOG TRACE 
> 
> [7/14/09 16:57:50:475 MSD]  R 266  MainPersistence  TRACE   
> openjpa.Runtime - 
> Query "SELECT a FROM Account AS a WHERE a.date = :date " is cached   
> as target 
> query "null" 
> [7/14/09 16:57:50:475 MSD] R 266  MainPersistence  TRACE   
> openjpa.Query - 
> Executing query: [SELECT a FROM Account AS a WHERE a.date = :date]   
> with 
> parameters: {date=java.util.GregorianCalendar[]} 
> [7/14/09 16:57:50:475 MSD] R 266  MainPersistence  TRACE   
> openjpa.jdbc.SQL 
> - <t 1495423266, conn 1329090360> executing prepstmnt 1388597956   
> SELECT 
> t0.id, t0.version, t0.cur_code, t0.acc_date, t0.mask, t0.acc_name, 
> t0.acc_seq, t0.value FROM ACCOUNT t0 WHERE (t0.acc_date = ?) 
> [params=(Timestamp) 2009-07-03 00:00:00.0] 
> [7/14/09 16:57:50:553 MSD] R 344  MainPersistence  TRACE   
> openjpa.jdbc.SQL - 
> <t 1495423266, conn 1329090360> [78 ms] spent 
> 
> [7/14/09 16:57:50:553 MSD] R 344  MainPersistence  TRACE   
> openjpa.jdbc.SQL - 
> <t 1495423266, conn 1329090360> executing prepstmnt 139855958 SELECT 
> t0.mask, t0.acc_name, t0.acc_seq, t0.value FROM ACCOUNT t0 WHERE   
> t0.id = ? 
> [params=(long) 328] 
> [7/14/09 16:57:50:631 MSD] R 422  MainPersistence  TRACE   
> [WebContainer : 2] 
> openjpa.jdbc.SQL - <t 1495423266, conn 1329090360> [78 ms] spent 
> [7/14/09 16:57:50:631 MSD] R 422  MainPersistence  TRACE   
> [WebContainer : 2] 
> openjpa.jdbc.SQL - <t 1495423266, conn 1329090360> executing prepstmnt

> 646850190 SELECT t0.mask, t0.acc_name, t0.acc_seq, t0.value FROM   
> ACCOUNT t0 
> WHERE t0.id = ? [params=(long) 329] 
> [7/14/09 16:57:50:709 MSD] R 500  MainPersistence  TRACE   
> [WebContainer : 2] 
> openjpa.jdbc.SQL - <t 1495423266, conn 1329090360> [78 ms] spent 
> [7/14/09 16:57:50:709 MSD] R 500  MainPersistence  TRACE   
> [WebContainer : 2] 
> openjpa.jdbc.SQL - <t 1495423266, conn 1329090360> executing prepstmnt

> 2146074602 SELECT t0.mask, t0.acc_name, t0.acc_seq, t0.value FROM   
> ACCOUNT t0 
> WHERE t0.id = ? [params=(long) 330] 
> [7/14/09 16:57:50:787 MSD] R 578  MainPersistence  TRACE   
> [WebContainer : 2] 
> openjpa.jdbc.SQL - <t 1495423266, conn 1329090360> [78 ms] spent 
> ...................................... 
> 
> 
> I need just list of detached objects to show it in grid. As it's   
> seen from 
> log trace above, first query is enough to return all necessary   
> objects and 
> fields. 
> Why OpenJPA makes select per object after that? In this case simple   
> code 
> above works 37 seconds for retrieving 440 rows, since same jdbc   
> select and 
> wrap works 1.5 sec. I've tried different query hints and a few openjpa

> versions, but with no result. 
> 
> 
> -- 
> View this message in context: 
http://n2.nabble.com/openJPA-generates-select-per-row---impossible-to-us
e-for-simple-select-statements-tp3261512p3261512.html
> Sent from the OpenJPA Users mailing list archive at Nabble.com. 

Craig L Russell 
Architect, Sun Java Enterprise System http://db.apache.org/jdo
408 276-5638 mailto:craig.russ...@...
<http://n2.nabble.com/user/SendEmail.jtp?type=node&node=3265119&i=0>  
P.S. A good JDO? O, Gasp! 




 <http://n2.nabble.com/images/icon_attachment.gif> smime.p7s (3K) 
Download Attachment
<http://n2.nabble.com/attachment/3265119/0/smime.p7s> 

 

________________________________

View message @ 
http://n2.nabble.com/openJPA-generates-select-per-row---impossible-to-us
e-for-simple-select-statements-tp3261512p3265119.html 
To unsubscribe from openJPA generates select per row - impossible to use
for simple select statements, click here
<http://n2.nabble.com/subscriptions/Unsubscribe.jtp?code=bWlraGFpbC5vc3R
yeWFuaW5AdWJzLmNvbXwzMjYxNTEyfC0yNDgxNjk4OTU=> . 

 

Visit our website at http://www.ubs.com

This message contains confidential information and is intended only 
for the individual named.  If you are not the named addressee you 
should not disseminate, distribute or copy this e-mail.  Please 
notify the sender immediately by e-mail if you have received this 
e-mail by mistake and delete this e-mail from your system.
        
E-mails are not encrypted and cannot be guaranteed to be secure or 
error-free as information could be intercepted, corrupted, lost, 
destroyed, arrive late or incomplete, or contain viruses.  The sender 
therefore does not accept liability for any errors or omissions in the 
contents of this message which arise as a result of e-mail transmission.  
If verification is required please request a hard-copy version.  This 
message is provided for informational purposes and should not be 
construed as a solicitation or offer to buy or sell any securities 
or related financial instruments.

 
UBS reserves the right to retain all messages. Messages are protected
and accessed only in legally justified cases.

Reply via email to