Mapeo @ManyToOne entre entidades de diferentes proyectos java

Por favor su ayuda...

Estoy mapeando 2 entidades POJO mediante la anotation @ManyToOne.
Las clases son: Oficina.java y Empresa.java
La particularidad es que las clases estan en proyectos distintos, es decir: Empresa.java pertenece al proyecto : "proyecto_1" , y la clase Oficina.java pertenece al proyecto "proyecto_2". En el "proyecto_2" esta agregado el jar del "proyecto_1" como libreria en el buildpath.

Las clases estan de la siguiente forma:

package com.ales.general.core.modelo;

@Entity
@Table(name = "oficina")
public class Oficina implements Serializable {

//datos de la clase

@ManyToOne
@JoinColumn(name = "EMP_CODIGO", referencedColumnName = "EMP_CODIGO")
private Empresa empresa;

//constructor
//getters y setters
}

package com.ales.seguridades.core.modelo;

@Entity
@Table(name = "empresa")
public class Empresa implements Serializable {
//datos de la entidad empresa
//constructor
//getters y setters
}

El error que me despliega sobre un jboss-5.1.0.GA, es:

2:24:11,057 ERROR [AbstractKernelController] Error installing to Start: name=persistence.unit:unitName=#datos-base-ales-core state=Create
org.hibernate.AnnotationException: @OneToOne or @ManyToOne on com.ales.general.core.modelo.Oficina.empresa references an unknown entity: com.ales.seguridades.core.modelo.Empresa
at org.hibernate.cfg.ToOneFkSecondPass.doSecondPass(ToOneFkSecondPass.java:81)
at org.hibernate.cfg.AnnotationConfiguration.processEndOfQueue(AnnotationConfiguration.java:456)
at org.hibernate.cfg.AnnotationConfiguration.processFkSecondPassInOrder(AnnotationConfiguration.java:438)
at org.hibernate.cfg.AnnotationConfiguration.secondPassCompile(AnnotationConfiguration.java:309)
at org.hibernate.cfg.Configuration.buildMappings(Configuration.java:1148)
at org.hibernate.ejb.Ejb3Configuration.buildMappings(Ejb3Configuration.java:1226)
at org.hibernate.ejb.EventListenerConfigurator.configure(EventListenerConfigurator.java:173)
at org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:854)
at org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:425)
at org.hibernate.ejb.HibernatePersistence.createContainerEntityManagerFactory(HibernatePersistence.java:131)
at org.jboss.jpa.deployment.PersistenceUnitDeployment.start(PersistenceUnitDeployment.java:301)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:592)
at org.jboss.reflect.plugins.introspection.ReflectionUtils.invoke(ReflectionUtils.java:59)
at org.jboss.reflect.plugins.introspection.ReflectMethodInfoImpl.invoke(ReflectMethodInfoImpl.java:150)
at org.jboss.joinpoint.plugins.BasicMethodJoinPoint.dispatch(BasicMethodJoinPoint.java:66)
at org.jboss.kernel.plugins.dependency.KernelControllerContextAction$JoinpointDispatchWrapper.execute(KernelControllerContextAction.java:241)
at org.jboss.kernel.plugins.dependency.ExecutionWrapper.execute(ExecutionWrapper.java:47)
at org.jboss.kernel.plugins.dependency.KernelControllerContextAction.dispatchExecutionWrapper(KernelControllerContextAction.java:109)
at org.jboss.kernel.plugins.dependency.KernelControllerContextAction.dispatchJoinPoint(KernelControllerContextAction.java:70)
at org.jboss.kernel.plugins.dependency.LifecycleAction.installActionInternal(LifecycleAction.java:221)
at org.jboss.kernel.plugins.dependency.InstallsAwareAction.installAction(InstallsAwareAction.java:54)
at org.jboss.kernel.plugins.dependency.InstallsAwareAction.installAction(InstallsAwareAction.java:42)
at org.jboss.dependency.plugins.action.SimpleControllerContextAction.simpleInstallAction(SimpleControllerContextAction.java:62)
at org.jboss.dependency.plugins.action.AccessControllerContextAction.install(AccessControllerContextAction.java:71)
at org.jboss.dependency.plugins.AbstractControllerContextActions.install(AbstractControllerContextActions.java:51)
at org.jboss.dependency.plugins.AbstractControllerContext.install(AbstractControllerContext.java:348)
at org.jboss.dependency.plugins.AbstractController.install(AbstractController.java:1631)
at org.jboss.dependency.plugins.AbstractController.incrementState(AbstractController.java:934)
at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:1082)
at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:984)
at org.jboss.dependency.plugins.AbstractController.install(AbstractController.java:774)
at org.jboss.dependency.plugins.AbstractController.install(AbstractController.java:540)
at org.jboss.deployers.vfs.deployer.kernel.BeanMetaDataDeployer.deploy(BeanMetaDataDeployer.java:121)
at org.jboss.deployers.vfs.deployer.kernel.BeanMetaDataDeployer.deploy(BeanMetaDataDeployer.java:51)
at org.jboss.deployers.spi.deployer.helpers.AbstractSimpleRealDeployer.internalDeploy(AbstractSimpleRealDeployer.java:62)
at org.jboss.deployers.spi.deployer.helpers.AbstractRealDeployer.deploy(AbstractRealDeployer.java:50)
at org.jboss.deployers.plugins.deployers.DeployerWrapper.deploy(DeployerWrapper.java:171)
at org.jboss.deployers.plugins.deployers.DeployersImpl.doDeploy(DeployersImpl.java:1439)
at org.jboss.deployers.plugins.deployers.DeployersImpl.doInstallParentFirst(DeployersImpl.java:1157)
at org.jboss.deployers.plugins.deployers.DeployersImpl.doInstallParentFirst(DeployersImpl.java:1178)
at org.jboss.deployers.plugins.deployers.DeployersImpl.install(DeployersImpl.java:1098)
at org.jboss.dependency.plugins.AbstractControllerContext.install(AbstractControllerContext.java:348)
at org.jboss.dependency.plugins.AbstractController.install(AbstractController.java:1631)
at org.jboss.dependency.plugins.AbstractController.incrementState(AbstractController.java:934)
at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:1082)
at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:984)
at org.jboss.dependency.plugins.AbstractController.change(AbstractController.java:822)
at org.jboss.dependency.plugins.AbstractController.change(AbstractController.java:553)
at org.jboss.deployers.plugins.deployers.DeployersImpl.process(DeployersImpl.java:781)
at org.jboss.deployers.plugins.main.MainDeployerImpl.process(MainDeployerImpl.java:702)
at org.jboss.system.server.profileservice.repository.MainDeployerAdapter.process(MainDeployerAdapter.java:117)
at org.jboss.system.server.profileservice.repository.ProfileDeployAction.install(ProfileDeployAction.java:70)
at org.jboss.system.server.profileservice.repository.AbstractProfileAction.install(AbstractProfileAction.java:53)
at org.jboss.system.server.profileservice.repository.AbstractProfileService.install(AbstractProfileService.java:361)
at org.jboss.dependency.plugins.AbstractControllerContext.install(AbstractControllerContext.java:348)
at org.jboss.dependency.plugins.AbstractController.install(AbstractController.java:1631)
at org.jboss.dependency.plugins.AbstractController.incrementState(AbstractController.java:934)
at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:1082)
at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:984)
at org.jboss.dependency.plugins.AbstractController.change(AbstractController.java:822)
at org.jboss.dependency.plugins.AbstractController.change(AbstractController.java:553)
at org.jboss.system.server.profileservice.repository.AbstractProfileService.activateProfile(AbstractProfileService.java:306)
at org.jboss.system.server.profileservice.ProfileServiceBootstrap.start(ProfileServiceBootstrap.java:271)
at org.jboss.bootstrap.AbstractServerImpl.start(AbstractServerImpl.java:461)
at org.jboss.Main.boot(Main.java:221)
at org.jboss.Main$1.run(Main.java:556)
at java.lang.Thread.run(Thread.java:595)

Comentarios

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de ezamudio

refactor

Deberías tener todas tus clases de entidades en un mismo jar, seguramente eso solucionará el problema (que estoy seguro está relacionado con la manera en que se van cargando las clases en tu app, pero saber la causa del problema no quiere decir que conozca la solución - lo más fácil será que reacomodes todas esas clases de entidad en un proyecto C y lo pongas como dependencia tanto del proyecto A como el B).

Los jar generados (los 2) los

Los jar generados (los 2) los tengo renombrados para que realice el deploy en el orden de las clases respectivamente. Es decir tengo asi:

"01-proyecto_1.jar" y "02-proyecto_2.jar"

Y segun mire en la consola de deploy del jboss, la clase Empresa si me publica primero, y luego Oficina, pero no tengo idea porque no encuentra la clase Empresa luego.

La idea de tener todas mis entidades en un mismo jar si creo solucionaria mi problema, pero el objetivo de separar las entidades en proyectos distintos es porque asi esta el negocio y en un futuro pueden crecer las entidades, pero lo tendría que hacer en otros proyectos dependiendo del negocio.
De antemano muchas gracias por tu ayuda, espero me puedas ayudar.

Saludos
JAC

Imagen de ezamudio

loaders

Es que no importa que la clase ya se encuentre cargada; si Hibernate utiliza el classloader de Oficina para buscar la clase Empresa, pues no la encuentra porque Empresa fue cargada por un classloader distinto. Por eso lo de meter todas las clases en un mismo jar.

Imagen de ezamudio

packaging

Puedes tener tus clases de entidades en distintos proyectos, la cosa es que las empaquetes todas en el mismo jar para deployment. Es cosa de personalizar tu proceso de empaquetamiento de las clases.

OK muchas gracias por la

OK muchas gracias por la idea, le voy a empaquetar en un mismo jar.

Saludos
JAC

ayudame

una ayuda con un programa que al ingresar 10 numeros por teclado , me diga cuantos 1,2,3,4,5,6,7,8,9 e ingresado