You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@openjpa.apache.org by "f.r.u.x.o.j@gmail.com" <f....@gmail.com> on 2008/03/05 00:57:39 UTC

Question about org.apache.openjpa.jdbc.sql.DBDictionary.toNativeJoin(Join join) method

Hi everybody,
I was trying to retrieve an object along with one of its many-to-one  
relation eagerly from the datastore.
Using a "database" JoinSyntax I always got the following exception:

org.apache.openjpa.persistence.PersistenceException: null
23:46:40,808 ERROR [STDERR] 	at  
org 
.apache.openjpa.jdbc.sql.DBDictionary.toNativeJoin(DBDictionary.java: 
2172)
23:46:40,808 ERROR [STDERR] 	at  
org.apache.openjpa.jdbc.sql.SelectImpl.append(SelectImpl.java:1702)
23:46:40,808 ERROR [STDERR] 	at  
org.apache.openjpa.jdbc.sql.DBDictionary.getWhere(DBDictionary.java: 
2061)
23:46:40,809 ERROR [STDERR] 	at  
org.apache.openjpa.jdbc.sql.DBDictionary.toSelect(DBDictionary.java: 
2000)
23:46:40,809 ERROR [STDERR] 	at  
org.apache.openjpa.jdbc.sql.SelectImpl.toSelect(SelectImpl.java:213)
23:46:40,809 ERROR [STDERR] 	at  
org.apache.openjpa.jdbc.sql.SelectImpl.execute(SelectImpl.java:344)
23:46:40,809 ERROR [STDERR] 	at  
org.apache.openjpa.jdbc.sql.SelectImpl.execute(SelectImpl.java:318)
23:46:40,809 ERROR [STDERR] 	at  
org 
.apache 
.openjpa 
.jdbc 
.kernel 
.SelectResultObjectProvider.open(SelectResultObjectProvider.java:94)
23:46:40,809 ERROR [STDERR] 	at  
org.apache.openjpa.lib.rop.EagerResultList.<init>(EagerResultList.java: 
34)
23:46:40,810 ERROR [STDERR] 	at  
org.apache.openjpa.kernel.QueryImpl.toResult(QueryImpl.java:1223)
23:46:40,810 ERROR [STDERR] 	at  
org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:990)
23:46:40,810 ERROR [STDERR] 	at  
org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:842)
23:46:40,810 ERROR [STDERR] 	at  
org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:773)
23:46:40,810 ERROR [STDERR] 	at  
org.apache.openjpa.kernel.DelegatingQuery.execute(DelegatingQuery.java: 
525)
23:46:40,810 ERROR [STDERR] 	at  
org.apache.openjpa.persistence.QueryImpl.execute(QueryImpl.java:237)
23:46:40,810 ERROR [STDERR] 	at  
org.apache.openjpa.persistence.QueryImpl.getResultList(QueryImpl.java: 
277)

which is due to the missing implementation of the  
org.apache.openjpa.jdbc.sql.DBDictionary.toNativeJoin(Join join)  
method. Here is it taken from the OpenJAP 1.0.2 sources:

     /**
      * Use the given join instance to create SQL joining its tables in
      * the database's native syntax. Throws an exception by default.
      */
     public SQLBuffer toNativeJoin(Join join) {
         throw new UnsupportedException();
     }

After having discovered this I have changed my JoinSyntax setting from  
"database" to "sql92" and everything went fine.
Could anyone please explain me why?

Note: I'm using OpenJPA 1.0.2 along with MySQL 5.0.51a.

Any help is appreciated.

Best regards,
Francesco

Re: Question about org.apache.openjpa.jdbc.sql.DBDictionary.toNativeJoin(Join join) method

Posted by Francesco Russo <f....@gmail.com>.
Thanks Patrick,
I agree it could be pretty useful having a default like "sql92" in such a
case.
Thanks a lot for the prompt replay.

Francesco

On Wed, Mar 5, 2008 at 2:32 AM, Patrick Linskey <pl...@gmail.com> wrote:

> Hi,
>
> The "database" JoinSyntax is reserved for database-specific syntax;
> for example, Oracle's old '+' outer join syntax. It's largely obsolete
> in modern databases, and is by definition not something that
> DBDictionary knows how to implement, since DBDictionary is
> generic-SQL.
>
> I guess a case could be made for making "database" default to the same
> behavior as "sql92".
>
> -Patrick
>
> On Tue, Mar 4, 2008 at 3:57 PM, f.r.u.x.o.j@gmail.com
> <f....@gmail.com> wrote:
> > Hi everybody,
> >  I was trying to retrieve an object along with one of its many-to-one
> >  relation eagerly from the datastore.
> >  Using a "database" JoinSyntax I always got the following exception:
> >
> >  org.apache.openjpa.persistence.PersistenceException: null
> >  23:46:40,808 ERROR [STDERR]     at
> >  org
> >  .apache.openjpa.jdbc.sql.DBDictionary.toNativeJoin(DBDictionary.java:
> >  2172)
> >  23:46:40,808 ERROR [STDERR]     at
> >  org.apache.openjpa.jdbc.sql.SelectImpl.append(SelectImpl.java:1702)
> >  23:46:40,808 ERROR [STDERR]     at
> >  org.apache.openjpa.jdbc.sql.DBDictionary.getWhere(DBDictionary.java:
> >  2061)
> >  23:46:40,809 ERROR [STDERR]     at
> >  org.apache.openjpa.jdbc.sql.DBDictionary.toSelect(DBDictionary.java:
> >  2000)
> >  23:46:40,809 ERROR [STDERR]     at
> >  org.apache.openjpa.jdbc.sql.SelectImpl.toSelect(SelectImpl.java:213)
> >  23:46:40,809 ERROR [STDERR]     at
> >  org.apache.openjpa.jdbc.sql.SelectImpl.execute(SelectImpl.java:344)
> >  23:46:40,809 ERROR [STDERR]     at
> >  org.apache.openjpa.jdbc.sql.SelectImpl.execute(SelectImpl.java:318)
> >  23:46:40,809 ERROR [STDERR]     at
> >  org
> >  .apache
> >  .openjpa
> >  .jdbc
> >  .kernel
> >  .SelectResultObjectProvider.open(SelectResultObjectProvider.java:94)
> >  23:46:40,809 ERROR [STDERR]     at
> >  org.apache.openjpa.lib.rop.EagerResultList.<init>(EagerResultList.java:
> >  34)
> >  23:46:40,810 ERROR [STDERR]     at
> >  org.apache.openjpa.kernel.QueryImpl.toResult(QueryImpl.java:1223)
> >  23:46:40,810 ERROR [STDERR]     at
> >  org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:990)
> >  23:46:40,810 ERROR [STDERR]     at
> >  org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:842)
> >  23:46:40,810 ERROR [STDERR]     at
> >  org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:773)
> >  23:46:40,810 ERROR [STDERR]     at
> >  org.apache.openjpa.kernel.DelegatingQuery.execute(DelegatingQuery.java:
> >  525)
> >  23:46:40,810 ERROR [STDERR]     at
> >  org.apache.openjpa.persistence.QueryImpl.execute(QueryImpl.java:237)
> >  23:46:40,810 ERROR [STDERR]     at
> >  org.apache.openjpa.persistence.QueryImpl.getResultList(QueryImpl.java:
> >  277)
> >
> >  which is due to the missing implementation of the
> >  org.apache.openjpa.jdbc.sql.DBDictionary.toNativeJoin(Join join)
> >  method. Here is it taken from the OpenJAP 1.0.2 sources:
> >
> >      /**
> >       * Use the given join instance to create SQL joining its tables in
> >       * the database's native syntax. Throws an exception by default.
> >       */
> >      public SQLBuffer toNativeJoin(Join join) {
> >          throw new UnsupportedException();
> >      }
> >
> >  After having discovered this I have changed my JoinSyntax setting from
> >  "database" to "sql92" and everything went fine.
> >  Could anyone please explain me why?
> >
> >  Note: I'm using OpenJPA 1.0.2 along with MySQL 5.0.51a.
> >
> >  Any help is appreciated.
> >
> >  Best regards,
> >  Francesco
> >
>
>
>
> --
> Patrick Linskey
> 202 669 5907
>

Re: Question about org.apache.openjpa.jdbc.sql.DBDictionary.toNativeJoin(Join join) method

Posted by Patrick Linskey <pl...@gmail.com>.
Hi,

The "database" JoinSyntax is reserved for database-specific syntax;
for example, Oracle's old '+' outer join syntax. It's largely obsolete
in modern databases, and is by definition not something that
DBDictionary knows how to implement, since DBDictionary is
generic-SQL.

I guess a case could be made for making "database" default to the same
behavior as "sql92".

-Patrick

On Tue, Mar 4, 2008 at 3:57 PM, f.r.u.x.o.j@gmail.com
<f....@gmail.com> wrote:
> Hi everybody,
>  I was trying to retrieve an object along with one of its many-to-one
>  relation eagerly from the datastore.
>  Using a "database" JoinSyntax I always got the following exception:
>
>  org.apache.openjpa.persistence.PersistenceException: null
>  23:46:40,808 ERROR [STDERR]     at
>  org
>  .apache.openjpa.jdbc.sql.DBDictionary.toNativeJoin(DBDictionary.java:
>  2172)
>  23:46:40,808 ERROR [STDERR]     at
>  org.apache.openjpa.jdbc.sql.SelectImpl.append(SelectImpl.java:1702)
>  23:46:40,808 ERROR [STDERR]     at
>  org.apache.openjpa.jdbc.sql.DBDictionary.getWhere(DBDictionary.java:
>  2061)
>  23:46:40,809 ERROR [STDERR]     at
>  org.apache.openjpa.jdbc.sql.DBDictionary.toSelect(DBDictionary.java:
>  2000)
>  23:46:40,809 ERROR [STDERR]     at
>  org.apache.openjpa.jdbc.sql.SelectImpl.toSelect(SelectImpl.java:213)
>  23:46:40,809 ERROR [STDERR]     at
>  org.apache.openjpa.jdbc.sql.SelectImpl.execute(SelectImpl.java:344)
>  23:46:40,809 ERROR [STDERR]     at
>  org.apache.openjpa.jdbc.sql.SelectImpl.execute(SelectImpl.java:318)
>  23:46:40,809 ERROR [STDERR]     at
>  org
>  .apache
>  .openjpa
>  .jdbc
>  .kernel
>  .SelectResultObjectProvider.open(SelectResultObjectProvider.java:94)
>  23:46:40,809 ERROR [STDERR]     at
>  org.apache.openjpa.lib.rop.EagerResultList.<init>(EagerResultList.java:
>  34)
>  23:46:40,810 ERROR [STDERR]     at
>  org.apache.openjpa.kernel.QueryImpl.toResult(QueryImpl.java:1223)
>  23:46:40,810 ERROR [STDERR]     at
>  org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:990)
>  23:46:40,810 ERROR [STDERR]     at
>  org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:842)
>  23:46:40,810 ERROR [STDERR]     at
>  org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:773)
>  23:46:40,810 ERROR [STDERR]     at
>  org.apache.openjpa.kernel.DelegatingQuery.execute(DelegatingQuery.java:
>  525)
>  23:46:40,810 ERROR [STDERR]     at
>  org.apache.openjpa.persistence.QueryImpl.execute(QueryImpl.java:237)
>  23:46:40,810 ERROR [STDERR]     at
>  org.apache.openjpa.persistence.QueryImpl.getResultList(QueryImpl.java:
>  277)
>
>  which is due to the missing implementation of the
>  org.apache.openjpa.jdbc.sql.DBDictionary.toNativeJoin(Join join)
>  method. Here is it taken from the OpenJAP 1.0.2 sources:
>
>      /**
>       * Use the given join instance to create SQL joining its tables in
>       * the database's native syntax. Throws an exception by default.
>       */
>      public SQLBuffer toNativeJoin(Join join) {
>          throw new UnsupportedException();
>      }
>
>  After having discovered this I have changed my JoinSyntax setting from
>  "database" to "sql92" and everything went fine.
>  Could anyone please explain me why?
>
>  Note: I'm using OpenJPA 1.0.2 along with MySQL 5.0.51a.
>
>  Any help is appreciated.
>
>  Best regards,
>  Francesco
>



-- 
Patrick Linskey
202 669 5907