Hi Armin,
many thanks for your investigation!
Yes, that hack would satisfy our needs unless it has side-effects (we use 
getReportQueryIteratorByQuery also in it's usual way).
The only thing is that we use OJB 1.0.1 (which we have patched for some 
issues), but I assume I'll manage to integrate your code.

I'd be very happy if you can send me the modified classes.

Best regards,
Norbert.


-----Ursprüngliche Nachricht-----
Von: Armin Waibel [mailto:[EMAIL PROTECTED] 
Gesendet: Samstag, 24. März 2007 00:19
An: OJB Users List
Betreff: Re: ReportQueryBySQL

Hi Norbert,

[EMAIL PROTECTED] wrote:
> Hello, we use OJB as persistence layer. Due to project specific
> needs, we've built another layer on top of OJB and we can/may not use
> jdbc at all anymore. The problem now is that we need queries that
> cannot be built with Query/Criteria objects because there is no
> proper mapping that could handle these scenarios. Is there a way to
> execute any kind of select statements without specifying a mapping
> and a target persistence class? I'd like to execute a select
> statement and get the result in the way as for ReportQueries. Eg: 
> Query query = new QueryBySQL(null, selectString); 
> persister.getReportQueryIteratorBySQLQuery(query);    // not the 'SQL'
> 
> The thing is that we cannot create mapping for any of these very
> specific queries, nor we can use jdbc.
> 
> Any chance to get this done with OJB? Many thanks!

Sorry, currently this is not possible.

I setup a test to reproduce your issue. After some time and a hack (add 
7 lines of code in 3 classes) I was able to execute arbitrary 
sql-statements using a report query (based on latest version from SVN 
OJB_1_0_RELEASE branch):

TEST
----

String sql = "select * from Artikel as A1 where A1.Artikelname = 
'testReportQueryBySql_1174691153125'";

Query query = QueryFactory.newQuery(null, sql);
Iterator it = broker.getReportQueryIteratorByQuery(query);
while(it.hasNext())
{
     Object o =  it.next();
     System.out.println("result: " + ArrayUtils.toString(o));
}

OUTPUT
------

result: 
{200017,testReportQueryBySql_1174691153125,0,<null>,<null>,0.0,0,0,0,0}
result: 
{200018,testReportQueryBySql_1174691153125,0,<null>,<null>,0.0,0,0,0,0}

OJB use the ResultSetMetadata of the ResultSet to determine the correct 
java field type. So this solution requires a proper jdbc-driver 
implementation.

Would this hack satisfy you?

regards,
Armin

> 
> 
> ---------------------------------------------------------------------
>  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]

Reply via email to