[jira] Created: (OPENJPA-1361) Enhancer fails when using OneToMany.mappedBy on bidi one-to-many relationship when using interface references on many side

3 messages Options
Embed this post
Permalink
JIRA jira@apache.org

[jira] Created: (OPENJPA-1361) Enhancer fails when using OneToMany.mappedBy on bidi one-to-many relationship when using interface references on many side

Reply Threaded More More options
Print post
Permalink
Enhancer fails when using OneToMany.mappedBy on bidi one-to-many relationship when using interface references on many side
--------------------------------------------------------------------------------------------------------------------------

                 Key: OPENJPA-1361
                 URL: https://issues.apache.org/jira/browse/OPENJPA-1361
             Project: OpenJPA
          Issue Type: Bug
    Affects Versions: 1.2.1
            Reporter: Matthew T. Adams


Synopsis:  bidirectional one-to-many relationship where the one side references the objects on the many side using a concrete class reference and the many side references the object on the one side using an interface reference.  When specifying the mappedBy property of the @OneToMany annotation, the OpenJPA enhancer throws the error:

Collection field "example.model.Concrete.pebbles" declares that it is mapped by "example.model.Pebble.buildingMaterial", but this is not a valid inverse relation.

When I remove the mappedBy property, everything works fine, except that OpenJPA creates an extra join table (Concrete_Pebble) where it shouldn't, IMHO.  I have two questions, an answer to either one of which will suffice:

1. Why can't I use mappedBy in this scenario?
2. How do I annotate things with @JoinColumn or similar that will allow me to not have a join table and only the reference from Pebble back to its BuildingMaterial?

I'll attach test case next.

--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

JIRA jira@apache.org

[jira] Updated: (OPENJPA-1361) Enhancer fails when using OneToMany.mappedBy on bidi one-to-many relationship when using interface references on many side

Reply Threaded More More options
Print post
Permalink

     [ https://issues.apache.org/jira/browse/OPENJPA-1361?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Matthew T. Adams updated OPENJPA-1361:
--------------------------------------

    Attachment: case-sandbox.zip

Test case.

> Enhancer fails when using OneToMany.mappedBy on bidi one-to-many relationship when using interface references on many side
> --------------------------------------------------------------------------------------------------------------------------
>
>                 Key: OPENJPA-1361
>                 URL: https://issues.apache.org/jira/browse/OPENJPA-1361
>             Project: OpenJPA
>          Issue Type: Bug
>    Affects Versions: 1.2.1
>            Reporter: Matthew T. Adams
>         Attachments: case-sandbox.zip
>
>
> Synopsis:  bidirectional one-to-many relationship where the one side references the objects on the many side using a concrete class reference and the many side references the object on the one side using an interface reference.  When specifying the mappedBy property of the @OneToMany annotation, the OpenJPA enhancer throws the error:
> Collection field "example.model.Concrete.pebbles" declares that it is mapped by "example.model.Pebble.buildingMaterial", but this is not a valid inverse relation.
> When I remove the mappedBy property, everything works fine, except that OpenJPA creates an extra join table (Concrete_Pebble) where it shouldn't, IMHO.  I have two questions, an answer to either one of which will suffice:
> 1. Why can't I use mappedBy in this scenario?
> 2. How do I annotate things with @JoinColumn or similar that will allow me to not have a join table and only the reference from Pebble back to its BuildingMaterial?
> I'll attach test case next.

--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

JIRA jira@apache.org

[jira] Updated: (OPENJPA-1361) Enhancer fails when using OneToMany.mappedBy on bidi one-to-many relationship when using interface references on many side

Reply Threaded More More options
Print post
Permalink
In reply to this post by JIRA jira@apache.org

     [ https://issues.apache.org/jira/browse/OPENJPA-1361?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Matthew T. Adams updated OPENJPA-1361:
--------------------------------------

    Attachment: case-sandbox-property-access.zip

At the suggestion of Mike Dick (http://n2.nabble.com/Using-mappedBy-getting-not-a-valid-inverse-relation-tt3880282.html#a3903117), tried property-based access & annotating the interface member with @OneToMany.  Got correct schema, but can't persist concrete type implementing interface, getting error:

<openjpa-1.2.1-r752877:753278 nonfatal store error> org.apache.openjpa.persistence.EntityExistsException: Attempt to persist detached object "example.model.Concrete@81fb".  If this is a new instance, make sure any version and/or auto-generated primary key fields are null/default when persisting.
FailedObject: example.model.Concrete@81fb

Doesn't matter anyway, since property access is neither desirable nor an option.

> Enhancer fails when using OneToMany.mappedBy on bidi one-to-many relationship when using interface references on many side
> --------------------------------------------------------------------------------------------------------------------------
>
>                 Key: OPENJPA-1361
>                 URL: https://issues.apache.org/jira/browse/OPENJPA-1361
>             Project: OpenJPA
>          Issue Type: Bug
>    Affects Versions: 1.2.1
>            Reporter: Matthew T. Adams
>         Attachments: case-sandbox-property-access.zip, case-sandbox.zip
>
>
> Synopsis:  bidirectional one-to-many relationship where the one side references the objects on the many side using a concrete class reference and the many side references the object on the one side using an interface reference.  When specifying the mappedBy property of the @OneToMany annotation, the OpenJPA enhancer throws the error:
> Collection field "example.model.Concrete.pebbles" declares that it is mapped by "example.model.Pebble.buildingMaterial", but this is not a valid inverse relation.
> When I remove the mappedBy property, everything works fine, except that OpenJPA creates an extra join table (Concrete_Pebble) where it shouldn't, IMHO.  I have two questions, an answer to either one of which will suffice:
> 1. Why can't I use mappedBy in this scenario?
> 2. How do I annotate things with @JoinColumn or similar that will allow me to not have a join table and only the reference from Pebble back to its BuildingMaterial?
> I'll attach test case next.

--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.