[hibernate-issues] [Hibernate-JIRA] Created: (HHH-5495) Unknown mappedBy using @Id @OneToOne

Alfio (JIRA) noreply at atlassian.com
Sun Aug 22 05:29:41 EDT 2010


Unknown mappedBy using @Id @OneToOne
------------------------------------

                 Key: HHH-5495
                 URL: http://opensource.atlassian.com/projects/hibernate/browse/HHH-5495
             Project: Hibernate Core
          Issue Type: Bug
    Affects Versions: 3.6.0.Beta3, 3.5.0-Final
         Environment: Hibernate 3.5 and 3.6.0-Beta3
Glassfish v3.0.1
            Reporter: Alfio
         Attachments: test.zip

This example should work according to JSR 317, Section 2.4.1.3, Example 4 Case(a):

@Entity
public class Person {

	@Id
	private String ssn;

	@Column( nullable = false )
	private String name;

	@Column( nullable = false )
	private String surname;
	
	@OneToOne( mappedBy = "person" )
	private PersonDetail personDetail;

	... getters and setters ...
}

@Entity
public class PersonDetail {

	@Id
	@OneToOne
	private Person person;

	@Column( nullable = true )
	private int age;

	@Column( nullable = true )
	private String city;

	... getters and setters ...
}

----
During deploy the following error is shown:

Exception while preparing the app org.hibernate.AnnotationException: Unknown mappedBy in: test.Person.personDetail, referenced property unknown: test.PersonDetail.person
	at org.hibernate.cfg.OneToOneSecondPass.doSecondPass(OneToOneSecondPass.java:159)
	at org.hibernate.cfg.Configuration.originalSecondPassCompile(Configuration.java:1754)
	at org.hibernate.cfg.Configuration.secondPassCompile(Configuration.java:1461)
	at org.hibernate.cfg.Configuration.buildMappings(Configuration.java:1413)
	at org.hibernate.ejb.Ejb3Configuration.buildMappings(Ejb3Configuration.java:1453)
	at org.hibernate.ejb.EventListenerConfigurator.configure(EventListenerConfigurator.java:193)
	at org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:1081)
	at org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:677)
	at org.hibernate.ejb.HibernatePersistence.createContainerEntityManagerFactory(HibernatePersistence.java:73)
	at org.glassfish.persistence.jpa.PersistenceUnitLoader.loadPU(PersistenceUnitLoader.java:181)
	at org.glassfish.persistence.jpa.PersistenceUnitLoader.<init>(PersistenceUnitLoader.java:96)
	at org.glassfish.persistence.jpa.JPADeployer.prepare(JPADeployer.java:121)
	at com.sun.enterprise.v3.server.ApplicationLifecycle.prepareModule(ApplicationLifecycle.java:644)
	at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:296)
	at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:183)
	at org.glassfish.deployment.admin.DeployCommand.execute(DeployCommand.java:272)
	at com.sun.enterprise.v3.admin.CommandRunnerImpl$1.execute(CommandRunnerImpl.java:305)
	at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:320)
	at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:1176)
	at com.sun.enterprise.v3.admin.CommandRunnerImpl.access$900(CommandRunnerImpl.java:83)
	at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1235)
	at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1224)
	at com.sun.enterprise.v3.admin.AdminAdapter.doCommand(AdminAdapter.java:365)
	at com.sun.enterprise.v3.admin.AdminAdapter.service(AdminAdapter.java:204)
	at com.sun.grizzly.tcp.http11.GrizzlyAdapter.service(GrizzlyAdapter.java:166)
	at com.sun.enterprise.v3.server.HK2Dispatcher.dispath(HK2Dispatcher.java:100)
	at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:245)
	at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:791)
	at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:693)
	at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:954)
	at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:170)
	at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:135)
	at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:102)
	at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:88)
	at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:76)
	at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:53)
	at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:57)
	at com.sun.grizzly.ContextTask.run(ContextTask.java:69)
	at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:330)
	at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:309)
	at java.lang.Thread.run(Thread.java:619)


---

It works well if I use MapsId (following example 4 case b in JSR 317)

@Entity
public class PersonDetail {

	@Id
	private String ssnPK;

	@MapsId
	@OneToOne
	private Person person;
...


-- 
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