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
