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

Karsten Wutzke (JIRA) noreply at atlassian.com
Mon May 2 07:43:59 EDT 2011


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
            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.
-
If you think it was sent incorrectly contact one of the administrators: http://opensource.atlassian.com/projects/hibernate/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        


More information about the hibernate-issues mailing list