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