Thanks very much for your help.
I better understand now.
In fact I did'nt want particulary use dynmic proxy. I put it because I look at some examples to create my repository file (I am quite lasy!)
Effectively, with my workaround it works good. I will look at the tutorial3 to understand proxy.
Another question : I just start to use autoincrement with sequence manager. It works good. Is it any way to get directly the value affected by the sequence manager ?
Best regards
Andre
Oleg Nitz wrote:
Hi Andre,
I guess the problem is: the collection returned by getCollectionByQuery() contains dynamic proxies, not MGT_Requests. So you should cast to an interface that MGT_Request should implement if you want to use dynamic proxies (does it?), see http://db.apache.org/ojb/tutorial3.html#Using%20Dynamic%20Proxies
You may force materialization, just call "get" method for some persistent field before results.add(resMGT_Request);
BTW your current workaround should be quite efficient due to proxy prefetching (new OJB feature).
Regards, Oleg
On Tuesday 27 January 2004 13:04, A Leg wrote:
Oleg
Thank you for your answer. emptyArray is just empty. And it is correct if you refer to Collection.toArray apiDoc. I made tries with and without emtyArray param, taking in count that both solutions exists. And I get the same result. Plus it works good when I fill the Collection by this code : (I use getCollectionByQuery only to get the iterator).
Iterator iter = collectionResult.iterator(); Collection results = new Vector(); while (iter.hasNext()) { exMGT_Request.setJobNum(new BigDecimal(id)); resMGT_Request = broker.getObjectByQuery(new QueryByIdentity(exMGT_Request)); iter.next(); results.add(resMGT_Request); id++; } MGT_Request[] resArray = (MGT_Request[])results.toArray(emptyArray);
I use this code as turnaround. But as you can see it is not realy very efficient. If I try to use data of iter.next() casting them to MGT_Request, it just fail also. For this reason my conclusion is that the elements of the Collection returned by getCollectionByQuery are only not valids. I use postgres as dataBase and everything is working good with it beside that.
I would appreciate any help, because the turnaround is so bad that I would prefer to drop it.
Best regards
Andre Legendre
Oleg Nitz wrote:
Hi Andre,---------------------------------------------------------------------
This is more like incorrect usage of Collection.toArray() method than OJB related problem. Please print emptyArray and emptyArray.length before the line
MGT_Request[] resArray = (MGT_Request[])acc.toArray(emptyArray);
Is emptyArray not null? Is emptyArray.length really 0?
Regards, Oleg
On Sunday 25 January 2004 13:22, A Leg wrote:
Hi---------------------------------------------------------------------
I get some more elements on my getCollectionByQuery problem.
It seems that elements of the Collection I get are not valid to be casted by my class. If I change to put an Iterator on the Collection it works good as soon I don't try to cast to my Objects.
Does anybody can help me ? I am realy stuck.
Andre
I change the code to :
System.out.println("Send COLLECTIONQUERY MGT "); Collection results = (Collection)broker.getCollectionByQuery(listQuery); //System.out.println("Get COLLECTIONQUERY MGT Rows : " + results.size()); System.out.println("Get COLLECTIONQUERY MGT Rows : INCONNU"); Iterator iter = results.iterator(); Collection acc = new Vector(); System.out.println("Get COLLECTIONQUERY ojbIterator get "); MGT_Request tmpReq = new MGT_Request(); System.out.println("Get COLLECTIONQUERY ojbIterator iter"); while (iter.hasNext()) { acc.add(iter.next()); } System.out.println("Get COLLECTIONQUERY ojbIterator done "); MGT_Request[] resArray = (MGT_Request[])acc.toArray(emptyArray); System.out.println("Get COLLECTIONQUERY toArray done ");
And I got the error message :
Send COLLECTIONQUERY MGT Get COLLECTIONQUERY MGT Rows : INCONNU Get COLLECTIONQUERY ojbIterator get Get COLLECTIONQUERY ojbIterator iter Get COLLECTIONQUERY ojbIterator done java.lang.ArrayStoreException at java.lang.System.arraycopy(Native Method) at java.util.Vector.toArray(Vector.java:688) at org.compiere.mfg_scm.dbManager.TaskConsumer.mfgGetCollectionByQuery(Unkno wn Source) at org.compiere.mfg_scm.dbManager.DbManagerImpl.mfgGetCollectionByQuery(Unkn ow n Source) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java :3 9) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorI mp l.java:25) at java.lang.reflect.Method.invoke(Method.java:324) at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:261) at sun.rmi.transport.Transport$1.run(Transport.java:148) at java.security.AccessController.doPrivileged(Native Method) at sun.rmi.transport.Transport.serviceCall(Transport.java:144) at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:460) at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.jav a: 701) at java.lang.Thread.run(Thread.java:534)
A Leg wrote:
Hi---------------------------------------------------------------------
I have some problem using getCollectionByQuery.
Here is the peace of Code :
System.out.println("Send COLLECTIONQUERY MGT "); Collection results = (Collection)broker.getCollectionByQuery(listQuery); System.out.println("Get COLLECTIONQUERY MGT Rows : " + results.size()); MGT_Request[] resArray = (MGT_Request[])results.toArray(emptyArray); System.out.println("Get COLLECTIONQUERY toArray done ");
I get this trace :
Send COLLECTIONQUERY MGT Get COLLECTIONQUERY MGT Rows : 2 java.lang.ArrayStoreException at java.lang.System.arraycopy(Native Method) at java.util.Vector.toArray(Vector.java:688) at org.compiere.mfg_scm.dbManager.TaskConsumer.mfgGetCollectionByQuery(Unkn o wn Source) at org.compiere.mfg_scm.dbManager.DbManagerImpl.mfgGetCollectionByQuery(Unk n own Source) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.jav a
:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessor I mpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:324) at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:261) at sun.rmi.transport.Transport$1.run(Transport.java:148) at java.security.AccessController.doPrivileged(Native Method) at sun.rmi.transport.Transport.serviceCall(Transport.java:144) at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:460) at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.ja v a:701)
at java.lang.Thread.run(Thread.java:534)
I have 2 records in my test table, so the size is good. But methods of Collection to extract objects from the Collection : Iterator, toArray seems to have problem with the results Collection.
When using the pb broker with getObjectByQuery on the same table and same object it is working good.
I am using db-ojb-1.0.rc4
Can anybody help me, I turn alone this problem from one day and get no progress.
Andre Legendre
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]