I have an entity, Foo, that has one-to-many FooChild children. This 
relationship is mapped via the OneToMany annotation. FooChild's properties are 
also mapped via annotation.

Foo and FooChild deploy fine, until I add an entity listener to Foo. 
Unfortunately I have to use a deployment descriptor (orm.xml) to add the entity 
listener - to use an annotation would add a circular dependency to our Maven 
module structure :(

<entity class="com.acme.Foo">
  |       <entity-listeners>
  |          <entity-listener class="com.acme.FooListener">
  |             <post-persist method-name="changeFoo" />
  |             <post-update method-name="changeFoo" />
  |          </entity-listener>
  |       </entity-listeners>
  |    </entity>


This works on the whole, but for entities that have OneToMany children 
annotation, I get this exception:


javax.persistence.PersistenceException: org.hibernate.AnnotationException: Use 
of @OneToMany or @ManyToMany targeting an unmapped class: 
com.acme.fooChildren[com.acme.FooChild]
  |    at 
org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:252)
  |    at 
org.hibernate.ejb.HibernatePersistence.createEntityManagerFactory(HibernatePersistence.java:120)
  |    at 
javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:51)
  | 
  | [snipped]
  | 
  | Caused by: org.hibernate.AnnotationException: Use of @OneToMany or 
@ManyToMany targeting an unmapped class: com.acme.fooChildren[com.acme.FooChild]
  |    at 
org.hibernate.cfg.annotations.CollectionBinder.bindManyToManySecondPass(CollectionBinder.java:1016)
  |    at 
org.hibernate.cfg.annotations.CollectionBinder.bindStarToManySecondPass(CollectionBinder.java:567)
  |    at 
org.hibernate.cfg.annotations.CollectionBinder$1.secondPass(CollectionBinder.java:508)
  |    at 
org.hibernate.cfg.CollectionSecondPass.doSecondPass(CollectionSecondPass.java:43)
  |    at 
org.hibernate.cfg.Configuration.secondPassCompile(Configuration.java:1130)
  |    at 
org.hibernate.cfg.AnnotationConfiguration.secondPassCompile(AnnotationConfiguration.java:296)
  |    at org.hibernate.cfg.Configuration.buildMappings(Configuration.java:1115)
  |    at 
org.hibernate.ejb.Ejb3Configuration.buildMappings(Ejb3Configuration.java:1233)
  |    at 
org.hibernate.ejb.EventListenerConfigurator.configure(EventListenerConfigurator.java:154)
  |    at 
org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:869)
  |    at 
org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:183)
  |    at 
org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:240)
  |    ... 19 more
  | 


It *looks* like adding the descriptor on Foo is stopping the annotations in 
FooChild from being picked up.

The annotations in FooChild are property rather than field, and my orm.xml 
contains the line:

   <access>PROPERTY</access>



I could understand it not working if the descriptor didn't contain this line as 
it would presumably default to field and expect to find field-level annotations 
on FooChild but fail as they were property-based.


Am I doing something wrong? I'm using JBoss 4.2.0GA.

View the original post : 
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4105593#4105593

Reply to the post : 
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4105593
_______________________________________________
jboss-user mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/jboss-user

Reply via email to