[hibernate-issues] [Hibernate-JIRA] Resolved: (HHH-6178) Mapping bidirectional one-to-one relationship fails with an AnnotationException: Unknown mappedBy in: / referenced property unknown

Gail Badner (JIRA) noreply at atlassian.com
Tue Aug 16 19:52:02 EDT 2011


     [ http://opensource.atlassian.com/projects/hibernate/browse/HHH-6178?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Gail Badner resolved HHH-6178.
------------------------------

    Resolution: Duplicate
      Assignee: Gail Badner

> Mapping bidirectional one-to-one relationship fails with an AnnotationException: Unknown mappedBy in: / referenced property unknown
> -----------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: HHH-6178
>                 URL: http://opensource.atlassian.com/projects/hibernate/browse/HHH-6178
>             Project: Hibernate Core
>          Issue Type: Bug
>          Components: core
>    Affects Versions: 3.6.0
>         Environment: Hibernate 3.6.0 Final, HSQLDB 2.0.1 RC, JavaSE
>            Reporter: Karsten Wutzke
>            Assignee: Gail Badner
>            Priority: Critical
>
> Mapping a simple bidirectional one-to-one relationship fails with an AnnotationException for no obvious reason.
> DB design:
> CREATE TABLE Persons
> (
>   id INTEGER NOT NULL,
>   first_name VARCHAR(50) NOT NULL,
>   last_name VARCHAR(50) NOT NULL,
>   PRIMARY KEY (id)
> );
> CREATE TABLE Coaches
> (
>   id INTEGER NOT NULL,
>   license_nbr VARCHAR(10) DEFAULT NULL NULL,
>   PRIMARY KEY (id),
>   FOREIGN KEY (id) REFERENCES Persons (id)
> );
> CREATE TABLE Players
> (
>   id INTEGER NOT NULL,
>   registration_nbr VARCHAR(20) DEFAULT NULL NULL,
>   PRIMARY KEY (id),
>   FOREIGN KEY (id) REFERENCES Persons (id)
> );
> Mappings (relevant shown only):
> @Entity
> @Table(name = "Persons")
> public class Person implements Serializable
> {
>     @Id
>     @Column(name = "id")
>     private Integer id;
>     @Column(name = "first_name")
>     private String firstName;
>     @Column(name = "last_name")
>     private String lastName;
>     @OneToOne(mappedBy = "person")
>     private Coach coach = null;
>     @OneToOne(mappedBy = "person")
>     private Player player = null;
>     ...
> }
> @Entity
> @Table(name = "Players")
> public class Player implements Serializable
> {
>     @Column(name = "registration_nbr")
>     private String registrationNbr = null;
>     @Id
>     @OneToOne
>     @JoinColumn(name = "id")
>     private Person person = null;
>     ...
> }
> @Entity
> @Table(name = "Coaches")
> public class Coach implements Serializable
> {
>     @Column(name = "license_nbr")
>     private String licenseNbr = null;
>     @Id
>     @OneToOne
>     @JoinColumn(name = "id")
>     private Person person = null;
>     ...
> }
> The exception thrown in a test app:
> Exception in thread "main" javax.persistence.PersistenceException: [PersistenceUnit: persons] Unable to configure EntityManagerFactory
>     at org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:374)
>     at org.hibernate.ejb.HibernatePersistence.createEntityManagerFactory(HibernatePersistence.java:56)
>     at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:48)
>     at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:32)
>     at tld.persons.Main.main(Main.java:34)
> Caused by: org.hibernate.AnnotationException: Unknown mappedBy in: tld.persons.model.Person.coach, referenced property unknown: tld.persons.model.Coach.person
>     at org.hibernate.cfg.OneToOneSecondPass.doSecondPass(OneToOneSecondPass.java:159)
>     at org.hibernate.cfg.Configuration.originalSecondPassCompile(Configuration.java:1686)
>     at org.hibernate.cfg.Configuration.secondPassCompile(Configuration.java:1393)
>     at org.hibernate.cfg.Configuration.buildMappings(Configuration.java:1345)
>     at org.hibernate.ejb.Ejb3Configuration.buildMappings(Ejb3Configuration.java:1477)
>     at org.hibernate.ejb.EventListenerConfigurator.configure(EventListenerConfigurator.java:193)
>     at org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:1096)
>     at org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:278)
>     at org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:362)
>     ... 4 more
> This exception is really surprising given the simplicity of this design. I've also tested this with EclipseLink which has no problems with the mappings.
> I'll attach an test case including the full code.

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

        


More information about the hibernate-issues mailing list