Hi,
How is the Account entity defined?  From what you have provided, I don't see
a reason for the extra Select statements either.  I'm just wondering if
something in your Entity definition is (accidentally) triggering these extra
interactions with the database.

Thanks,
Kevin

On Wed, Jul 15, 2009 at 2:19 AM, om <[email protected]> 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-use-for-simple-select-statements-tp3261512p3261512.html
> Sent from the OpenJPA Users mailing list archive at Nabble.com.
>

Reply via email to