unidirectional @oneToMany without joinTable in openJpa 2 -
i trying create unidirectional onetomany mapping in openjpa 2.3.0, want define column name hold foreighn key on source table. far know in jpa 2.0 can done follows :
@entity public class source { private list<target> targets = new arraylist<>(); @onetomany @joincolumn(name="source_fk") public list<target> gettargets() { return targets; } }
but following exception :
<openjpa-2.3.0-r422266:1540826 fatal user error> org.apache.openjpa.persistence.argumentexception: have supplied columns "source.targets", mapping cannot have columns in context. @ org.apache.openjpa.jdbc.meta.mappinginfo.assertnoschemacomponents(mappinginfo.java:382) @ org.apache.openjpa.jdbc.meta.strats.relationtomanytablefieldstrategy.map(relationtomanytablefieldstrategy.java:97) @ org.apache.openjpa.jdbc.meta.strats.relationcollectiontablefieldstrategy.map(relationcollectiontablefieldstrategy.java:94) @ org.apache.openjpa.jdbc.meta.fieldmapping.setstrategy(fieldmapping.java:146) @ org.apache.openjpa.jdbc.meta.runtimestrategyinstaller.installstrategy(runtimestrategyinstaller.java:82) @ org.apache.openjpa.jdbc.meta.fieldmapping.resolvemapping(fieldmapping.java:496) @ org.apache.openjpa.jdbc.meta.fieldmapping.resolve(fieldmapping.java:461) @ org.apache.openjpa.jdbc.meta.classmapping.resolvemapping(classmapping.java:854) @ org.apache.openjpa.meta.classmetadata.resolve(classmetadata.java:1811) @ org.apache.openjpa.meta.metadatarepository.processbuffer(metadatarepository.java:829) @ org.apache.openjpa.meta.metadatarepository.resolvemapping(metadatarepository.java:784) @ org.apache.openjpa.meta.metadatarepository.resolve(metadatarepository.java:664) @ org.apache.openjpa.meta.metadatarepository.getmetadatainternal(metadatarepository.java:418) @ org.apache.openjpa.meta.metadatarepository.getmetadata(metadatarepository.java:389) @ org.apache.openjpa.kernel.brokerimpl.persistinternal(brokerimpl.java:2666) @ org.apache.openjpa.kernel.brokerimpl.persist(brokerimpl.java:2604) @ org.apache.openjpa.kernel.brokerimpl.persist(brokerimpl.java:2587) @ org.apache.openjpa.kernel.brokerimpl.persist(brokerimpl.java:2491) @ org.apache.openjpa.kernel.delegatingbroker.persist(delegatingbroker.java:1077) @ org.apache.openjpa.persistence.entitymanagerimpl.persist(entitymanagerimpl.java:716) @
it seems openjpa 2.3.0 not support joincolumn in unidirectional onetomany. true or missing something? if case , there workaround without using join tables ?
answering own question : openjpa 2 support @joincolumn in onetomany relationship.
as have found here there various reasons can lead exception.
in case problem false schema url in persistence.xml
the problematic line followng 1 :
xsi:schemalocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd" version="1.0">
which telling openjpa comply jpa 1.0 specifications (jpa 1.0 not support annotation in onetomany relationship jpa 2 does) changed version 2.0 , worked fine.
xsi:schemalocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd" version="2.0">
Comments
Post a Comment