Can I map a many to one association through a join table (association table)?

Like this, BSC->MSC is many to one relationship, and I want to store
relationship in a join table (MSC_BSC).

@Entity
public class Bsc {

    @Id
    protected long objid;
    @Id
    @Column(nullable=false)
    protected String objname;
    @Basic
    protected String objclass;
    @Basic
    protected Calendar created;
    @Basic
    protected String msc_name;

    @OneToMany(cascade={CascadeType.PERSIST,CascadeType.REMOVE},
fetch=FetchType.EAGER)
    protected List<Bts> bts;
    
    @ManyToOne(fetch=FetchType.EAGER)
    @InverseLogical
    @JoinTable(name="MSC_BSC",
                inverseJoinColumns ={
                        @JoinColumn( name="msc_objid", 
referencedColumnName="objid"),
                        @JoinColumn( name="msc_oc", 
referencedColumnName="objclass")},
                joinColumns ={
                        @JoinColumn( 
name="bsc_objid",referencedColumnName="objid"),
                        @JoinColumn( 
name="bsc_oc",referencedColumnName="objclass")})
    protected Msc msc;
...

I get the following exceptions,

Exception in thread "main" <4|true|0.9.7-incubating-SNAPSHOT>
org.apache.openjpa.persistence.ArgumentException: You have supplied columns
for "dmpjaxb.gen.Bsc.msc<element:class java.lang.Object>", but this mapping
cannot have columns in this context.
        at
org.apache.openjpa.jdbc.meta.MappingInfo.assertNoSchemaComponents(MappingInfo.java:323)
        at
org.apache.openjpa.jdbc.meta.strats.RelationFieldStrategy.map(RelationFieldStrategy.java:78)
        at
org.apache.openjpa.jdbc.meta.FieldMapping.setStrategy(FieldMapping.java:117)
        at
org.apache.openjpa.jdbc.meta.RuntimeStrategyInstaller.installStrategy(RuntimeStrategyInstaller.java:77)
        at
org.apache.openjpa.jdbc.meta.FieldMapping.resolveMapping(FieldMapping.java:435)
        at 
org.apache.openjpa.jdbc.meta.FieldMapping.resolve(FieldMapping.java:400)
        at
org.apache.openjpa.jdbc.meta.ClassMapping.resolveMapping(ClassMapping.java:781)
        at 
org.apache.openjpa.meta.ClassMetaData.resolve(ClassMetaData.java:1570)
        at
org.apache.openjpa.meta.MetaDataRepository.processBuffer(MetaDataRepository.java:656)
        at
org.apache.openjpa.meta.MetaDataRepository.resolveMapping(MetaDataRepository.java:617)
        at
org.apache.openjpa.meta.MetaDataRepository.resolve(MetaDataRepository.java:495)
        at
org.apache.openjpa.meta.MetaDataRepository.getMetaData(MetaDataRepository.java:285)
        at
org.apache.openjpa.jdbc.meta.MappingRepository.getMapping(MappingRepository.java:276)
        at
org.apache.openjpa.jdbc.meta.MappingTool.getMapping(MappingTool.java:667)
        at
org.apache.openjpa.jdbc.meta.MappingTool.buildSchema(MappingTool.java:739)
        at org.apache.openjpa.jdbc.meta.MappingTool.run(MappingTool.java:637)
        at
org.apache.openjpa.jdbc.kernel.JDBCBrokerFactory.synchronizeMappings(JDBCBrokerFactory.java:161)
        at
org.apache.openjpa.jdbc.kernel.JDBCBrokerFactory.newBrokerImpl(JDBCBrokerFactory.java:127)
        at
org.apache.openjpa.kernel.AbstractBrokerFactory.newBroker(AbstractBrokerFactory.java:171)
        at
org.apache.openjpa.kernel.DelegatingBrokerFactory.newBroker(DelegatingBrokerFactory.java:139)
        at
org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:187)
        at
org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:140)
        at
org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:52)
        at dmpjaxb.Main.main(Main.java:50)

I want to know is this a limitation of OpenJPA or standard of JPA?
-- 
View this message in context: 
http://www.nabble.com/Can-%40JoinTable-be-used-in-combination-with-%40ManyToOne--tf3379841.html#a9407355
Sent from the open-jpa-dev mailing list archive at Nabble.com.

Reply via email to