You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@openjpa.apache.org by Drew Lethbridge <dr...@bund.com.au> on 2007/09/19 16:37:56 UTC
jdo index on many-to-many foreign key
Is it ok to ask this list JDO questions in the context of openjpa?
If not, please let me know. If it's ok, then the question is as
follows:
I have declared a foreign key field as follows, and set
indexed="true", but openjpa does not like it, see following
exception. Why is this not supported, and what's my easiest
workaround? Thanks...
<field name="_holdings" table="ACCOU__HOLDINGS" indexed="true">
<collection element-type="Holding" />
<join column="JDOID" indexed="true"/>
<element column="HOLDINGS_JDOID" indexed="true">
<foreign-key deferred="true" />
</element>
</field>
[java] <1.0.0-SNAPSHOT-SNAPSHOT fatal user error>
org.apache.openjpa.util.MetaDataException: "Account._holdings" is
marked as indexed, but OpenJPA does not support an index on this
mapping in this context.
[java] at
org.apache.openjpa.jdbc.meta.MappingInfo.assertNoIndex
(MappingInfo.java:370)
[java] at
org.apache.openjpa.jdbc.meta.MappingInfo.assertNoSchemaComponents
(MappingInfo.java:319)
[java] at
org.apache.openjpa.jdbc.meta.strats.RelationToManyTableFieldStrategy.map
(RelationToManyTableFieldStrategy.java:96)
[java] at
org.apache.openjpa.jdbc.meta.strats.RelationCollectionTableFieldStrategy
.map(RelationCollectionTableFieldStrategy.java:94)
[java] at
org.apache.openjpa.jdbc.meta.FieldMapping.setStrategy
(FieldMapping.java:120)
[java] at
org.apache.openjpa.jdbc.meta.RuntimeStrategyInstaller.installStrategy
(RuntimeStrategyInstaller.java:80)
[java] at
org.apache.openjpa.jdbc.meta.FieldMapping.resolveMapping
(FieldMapping.java:438)
[java] at org.apache.openjpa.jdbc.meta.FieldMapping.resolve
(FieldMapping.java:403)
[java] at
org.apache.openjpa.jdbc.meta.ClassMapping.resolveMapping
(ClassMapping.java:784)
[java] at org.apache.openjpa.meta.ClassMetaData.resolve
(ClassMetaData.java:1586)
[java] at
org.apache.openjpa.meta.MetaDataRepository.processBuffer
(MetaDataRepository.java:659)
[java] at
org.apache.openjpa.meta.MetaDataRepository.resolveMapping
(MetaDataRepository.java:620)
[java] at org.apache.openjpa.meta.MetaDataRepository.resolve
(MetaDataRepository.java:498)
[java] at
org.apache.openjpa.meta.MetaDataRepository.getMetaData
(MetaDataRepository.java:288)
[java] at
org.apache.openjpa.meta.MetaDataRepository.resolveMeta
(MetaDataRepository.java:524)
[java] at org.apache.openjpa.meta.MetaDataRepository.resolve
(MetaDataRepository.java:484)
[java] at
org.apache.openjpa.meta.MetaDataRepository.getMetaData
(MetaDataRepository.java:288)
[java] at
org.apache.openjpa.jdbc.meta.MappingRepository.getMapping
(MappingRepository.java:279)
[java] at
org.apache.openjpa.jdbc.meta.MappingTool.getMapping(MappingTool.java:
670)
[java] at
org.apache.openjpa.jdbc.meta.MappingTool.buildSchema(MappingTool.java:
742)
[java] at org.apache.openjpa.jdbc.meta.MappingTool.run
(MappingTool.java:640)
[java] at org.apache.openjpa.jdbc.meta.MappingTool.run
(MappingTool.java:1063)
[java] at my code....
Re: jdo index on many-to-many foreign key
Posted by Drew Lethbridge <dr...@bund.com.au>.
Scratch that question. There is no foreign key column in the parent
table of a to-many relationship, which is why it cannot be
indexed... Sorry... Not enough coffee.
On 19/09/2007, at 4:37 PM, Drew Lethbridge wrote:
> Is it ok to ask this list JDO questions in the context of openjpa?
> If not, please let me know. If it's ok, then the question is as
> follows:
>
> I have declared a foreign key field as follows, and set
> indexed="true", but openjpa does not like it, see following
> exception. Why is this not supported, and what's my easiest
> workaround? Thanks...
>
> <field name="_holdings" table="ACCOU__HOLDINGS" indexed="true">
> <collection element-type="Holding" />
> <join column="JDOID" indexed="true"/>
> <element column="HOLDINGS_JDOID" indexed="true">
> <foreign-key deferred="true" />
> </element>
> </field>
>
> [java] <1.0.0-SNAPSHOT-SNAPSHOT fatal user error>
> org.apache.openjpa.util.MetaDataException: "Account._holdings" is
> marked as indexed, but OpenJPA does not support an index on this
> mapping in this context.
> [java] at
> org.apache.openjpa.jdbc.meta.MappingInfo.assertNoIndex
> (MappingInfo.java:370)
> [java] at
> org.apache.openjpa.jdbc.meta.MappingInfo.assertNoSchemaComponents
> (MappingInfo.java:319)
> [java] at
> org.apache.openjpa.jdbc.meta.strats.RelationToManyTableFieldStrategy.m
> ap(RelationToManyTableFieldStrategy.java:96)
> [java] at
> org.apache.openjpa.jdbc.meta.strats.RelationCollectionTableFieldStrate
> gy.map(RelationCollectionTableFieldStrategy.java:94)
> [java] at
> org.apache.openjpa.jdbc.meta.FieldMapping.setStrategy
> (FieldMapping.java:120)
> [java] at
> org.apache.openjpa.jdbc.meta.RuntimeStrategyInstaller.installStrategy(
> RuntimeStrategyInstaller.java:80)
> [java] at
> org.apache.openjpa.jdbc.meta.FieldMapping.resolveMapping
> (FieldMapping.java:438)
> [java] at org.apache.openjpa.jdbc.meta.FieldMapping.resolve
> (FieldMapping.java:403)
> [java] at
> org.apache.openjpa.jdbc.meta.ClassMapping.resolveMapping
> (ClassMapping.java:784)
> [java] at org.apache.openjpa.meta.ClassMetaData.resolve
> (ClassMetaData.java:1586)
> [java] at
> org.apache.openjpa.meta.MetaDataRepository.processBuffer
> (MetaDataRepository.java:659)
> [java] at
> org.apache.openjpa.meta.MetaDataRepository.resolveMapping
> (MetaDataRepository.java:620)
> [java] at
> org.apache.openjpa.meta.MetaDataRepository.resolve
> (MetaDataRepository.java:498)
> [java] at
> org.apache.openjpa.meta.MetaDataRepository.getMetaData
> (MetaDataRepository.java:288)
> [java] at
> org.apache.openjpa.meta.MetaDataRepository.resolveMeta
> (MetaDataRepository.java:524)
> [java] at
> org.apache.openjpa.meta.MetaDataRepository.resolve
> (MetaDataRepository.java:484)
> [java] at
> org.apache.openjpa.meta.MetaDataRepository.getMetaData
> (MetaDataRepository.java:288)
> [java] at
> org.apache.openjpa.jdbc.meta.MappingRepository.getMapping
> (MappingRepository.java:279)
> [java] at
> org.apache.openjpa.jdbc.meta.MappingTool.getMapping
> (MappingTool.java:670)
> [java] at
> org.apache.openjpa.jdbc.meta.MappingTool.buildSchema
> (MappingTool.java:742)
> [java] at org.apache.openjpa.jdbc.meta.MappingTool.run
> (MappingTool.java:640)
> [java] at org.apache.openjpa.jdbc.meta.MappingTool.run
> (MappingTool.java:1063)
> [java] at my code....
>
>