Hi,

That error is happening because the direct relationships to A cannot
be handled efficiently by Kodo; since you are using a subclass
mapping, it is impossible to directly join to a given record of type
A.

You can tell Kodo that you are OK with this inefficiency by specifying
an @ElementType annotation. See
http://openjpa.apache.org/docs/latest/manual/manual.html#type for
details about these limitations and how to configure Kodo to store the
relationship.

-Patrick

On Nov 7, 2007 9:16 AM, Jean Andriamalala <[EMAIL PROTECTED]> wrote:
>
> Hi All,
>
> Could somebody tell me what the following error means:
>
>      [java] Exception in thread "main" <1.0.0-SNAPSHOT-SNAPSHOT fatal user 
> error> kodo.jdo.FatalUserException: Cannot join across 
> "test.kodo.abstractInstance.C.c1".  The related type has unjoined subclasses. 
>     [java]     at 
> org.apache.openjpa.jdbc.meta.strats.RelationStrategies.unjoinable(RelationStrategies.java:53)
>      [java]     at 
> org.apache.openjpa.jdbc.meta.strats.RelationFieldStrategy.joinRelation(RelationFieldStrategy.java:702)
>      [java]     at 
> org.apache.openjpa.jdbc.meta.FieldMapping.joinRelation(FieldMapping.java:835) 
>     [java]     at 
> org.apache.openjpa.jdbc.kernel.exps.PCPath.joinRelation(PCPath.java:527)     
> [java]     at 
> org.apache.openjpa.jdbc.kernel.exps.PCPath.traverseField(PCPath.java:506)     
> [java]     at 
> org.apache.openjpa.jdbc.kernel.exps.PCPath.initialize(PCPath.java:386)     
> [java]     at 
> org.apache.openjpa.jdbc.kernel.exps.CompareEqualExpression.initialize(CompareEqualExpression.java:78)
>      [java]     at 
> org.apache.openjpa.jdbc.kernel.exps.SelectConstructor.initialize(SelectConstructor.java:178)
>      [java]     at 
> org.apache.openjpa.jdbc.kernel.exps.SelectConstructor.newSelect(SelectConstructor.java:119)
>      [java]     at 
> org.apache.openjpa.jdbc.kernel.exps.SelectConstructor.evaluate(SelectConstructor.java:73)
>      [java]     at 
> org.apache.openjpa.jdbc.kernel.JDBCStoreQuery.createWhereSelects(JDBCStoreQuery.java:329)
>      [java]     at 
> org.apache.openjpa.jdbc.kernel.JDBCStoreQuery.executeQuery(JDBCStoreQuery.java:169)
>      [java]     at 
> org.apache.openjpa.kernel.ExpressionStoreQuery$DataStoreExecutor.executeQuery(ExpressionStoreQuery.java:677)
>      [java]     at 
> org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:985)     [java]    
>  at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:796)     
> [java]     at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:766)
>
> My application is as follows:
> - Abstract base class A having attribute a1 and concrete subclasses B1 and B2
> - Mapping strategy for A is subclass table
> - Class C having attribute c1 of type A (so a direct relationship with 
> abstract class A)
> - The above query is as this:
>    newQuery("C", "c1.a1 == 'something'");
>
> I am using the BEA Kodo implementation.
>
> I would appreciate if you CC me on your response as I am not permanently 
> subscribed on this list.
>
> Thanks & Best regards,
>
> Jean
> _________________________________________________________________
> Explore the seven wonders of the world
> http://search.msn.com/results.aspx?q=7+wonders+world&mkt=en-US&form=QBRE



-- 
Patrick Linskey
202 669 5907

Reply via email to