[hibernate-issues] [Hibernate-JIRA] Commented: (EJB-401) @OneToOne or @ManyToOne references an unknown entity when maven-surefire-test runs without -DforkMode=none property

Farrukh Najmi (JIRA) noreply at atlassian.com
Tue Nov 18 09:46:16 EST 2008


    [ http://opensource.atlassian.com/projects/hibernate/browse/EJB-401?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=31737#action_31737 ] 

Farrukh Najmi commented on EJB-401:
-----------------------------------

I have found the cause of the problem to be due to there being two different versions of class acme.Referenced in two separate jars. The first jar has the class acme.Referer and acme.Referenced. The second jar only has class acme.Referenced. When I remove the second jar from classpath the problem goes away. It definitely seems to be a ClassLoader issue. The problem scenario still exists if I use the current latest bibernate stack based on row in compatibility matrix for hibernate-entity-manager 3.4.0.GA.


> @OneToOne or @ManyToOne references an unknown entity when maven-surefire-test runs without -DforkMode=none property
> -------------------------------------------------------------------------------------------------------------------
>
>                 Key: EJB-401
>                 URL: http://opensource.atlassian.com/projects/hibernate/browse/EJB-401
>             Project: Hibernate Entity Manager
>          Issue Type: Bug
>          Components: EntityManager
>    Affects Versions: 3.3.2.GA
>            Reporter: Farrukh Najmi
>            Priority: Critical
>
> I have an entity class called Referer that references another entity class called Referenced as follows:
> //The class that has a reference
> @Entity(name = "acme.Referer")
> @Table(name = "REFERER")
> @Inheritance(strategy = InheritanceType.JOINED)
> public class DeliveryInfoType extends RefererBase {
>     @ManyToOne(targetEntity = acme.Referenced.class, cascade = {
>         CascadeType.ALL
>     })
>     @JoinColumn(name = "REFERER_REFERENCED_ID")
>     protected acme.Referenced referenced;
>     ...
> }
> //The class that is being referenced
> @Entity(name = "acme.Referenced")
> @Table(name = "REFERENCED")
> @Inheritance(strategy = InheritanceType.JOINED)
> public class EndpointReferenceType
> ...
> }
> The abstract base class for Referer is a mapped superclass called RefererBase as follows:
> @MappedSuperclass
> public abstract class ExtensibleObjectType {
> ...
> }
> When I run a junit test via maven-surefire-plugin while specifying the -DforkMode=none property then the test succeeds.
> When I run a junit test via maven-surefire-plugin without specifying the -DforkMode=none property then the test fails when creating the EntityManagerFactory as follows.
> Caused by: javax.persistence.PersistenceException: [PersistenceUnit: my-persistence-unit] Unable to configure EntityManagerFactory
>         at org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:265)
>         at org.hibernate.ejb.HibernatePersistence.createEntityManagerFactory(HibernatePersistence.java:125)
>         at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:83)
>         at acme.SomeClass.createEntityManagerFactory(SomeClass.java:278)
>         at acme.SomeClass.setUp(SomeClass.java:233)
>         at acme.SomeClass.<init>(SomeClass.java:57)
>         at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
>         at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
>         at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
>         at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
>         at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:100)
>         ... 57 more
> Caused by: org.hibernate.AnnotationException: @OneToOne or @ManyToOne on acme.Referer.referenced references an unknown entity: acme.Referenced
>         at org.hibernate.cfg.ToOneFkSecondPass.doSecondPass(ToOneFkSecondPass.java:81)
>         at org.hibernate.cfg.AnnotationConfiguration.processFkSecondPassInOrder(AnnotationConfiguration.java:499)
>         at org.hibernate.cfg.AnnotationConfiguration.secondPassCompile(AnnotationConfiguration.java:304)
>         at org.hibernate.cfg.Configuration.buildMappings(Configuration.java:1121)
>         at org.hibernate.ejb.Ejb3Configuration.buildMappings(Ejb3Configuration.java:1225)
>         at org.hibernate.ejb.EventListenerConfigurator.configure(EventListenerConfigurator.java:159)
>         at org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:854)
>         at org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:191)
>         at org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:253)
>         ... 67 more
> maven-surefire-plugin defines its forkMode property as follows at <http://maven.apache.org/plugins/maven-surefire-plugin/test-mojo.html>:
> forkMode  	String  	Option to specify the forking mode. Can be "never", "once" or "always". "none" and "pertest" are also accepted for backwards compatibility. Default value is once.
> I am baffled as to why hiberante EntityManager is behaving working when forkMode is set to "none" but fails when forkMode is set to default of "once".
> It seems like a classloader related issue. Here are the hibernate related jars in my webapp:
> org.hibernate:hibernate-search:jar:3.0.1.GA
> org.hibernate:hibernate:jar:3.2.6.ga
> org.hibernate:hibernate-entitymanager:jar:3.3.2.GA
> org.hibernate:hibernate-commons-annotations:jar:3.0.0.ga
> org.hibernate:ejb3-persistence:jar:1.0.1.GA
> org.hibernate:hibernate-annotations:jar:3.3.1.GA
> This issue may possibly be related to following issue:
> <http://opensource.atlassian.com/projects/hibernate/browse/EJB-199>

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