Estoy recibiendo el siguiente Hibernate Excepción:org.hibernate.AnnotationException: @OneToOne o @ManyToOne en <entity> referencias una entidad desconocida
org.hibernate.AnnotationException: @OneToOne or @ManyToOne on cz.rohan.dusps.model.Switchport.konfiguracniTemplateAccess references an unknown entity: cz.rohan.dusps.model.KonfiguracniTemplate
org.hibernate.cfg.ToOneFkSecondPass.doSecondPass(ToOneFkSecondPass.java:103)
org.hibernate.cfg.AnnotationConfiguration.processEndOfQueue(AnnotationConfiguration.java:541)
org.hibernate.cfg.AnnotationConfiguration.processFkSecondPassInOrder(AnnotationConfiguration.java:523)
org.hibernate.cfg.AnnotationConfiguration.secondPassCompile(AnnotationConfiguration.java:380)
org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1377)
org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:954)
cz.rohan.dusps.helper.SessionFactoryHelper.initFactory(SessionFactoryHelper.java:122)
cz.rohan.dusps.helper.SessionFactoryHelper.getSessionFactory(SessionFactoryHelper.java:134)
cz.rohan.dusps.filter.HistorieZmenFilter.doFilter(HistorieZmenFilter.java:102)
cz.rohan.dusps.filter.CharsetFilter.doFilter(CharsetFilter.java:41)
después de ~ 20 horas pasadas en el problema con varias personas, después de leer todas las posible blog o foro, realmente me estoy desesperando aquí.
Este es un proyecto de tamaño mediano. Debo mencionar que la base de datos es Postgres 9.1 y generamos la base de datos usando una herramienta de modelado. Hibernate se conecta a la base de datos pero no la genera.
He creado una nueva entidad en la base de datos, se llama "KonfiguracniTemplate" (plantilla de configuración). He creado el modelo, controlador, formulario, validadores, .jsp, todos básicamente copiados 1: 1 de una entidad existente de naturaleza similar. Ahora puedo trabajar con KonfiguracniTemplate, CRUD está trabajando plenamente.
El problema surge cuando hago referencia a esta KonfiguracniTemplate desde la entidad llamada Switchport. En el DB existe una relación entre los dos:
- Switchport 1: 1 ... 0: N KonfiguracniTemplate (switchport siempre referencia a un KonfiguracniTemplate; un KonfiguracniTemplate puede hacerse referencia a cero o más veces)
- Switchport tiene FK konfiguracniTemplateAccess_id para esta relación.
En .../modelo/Switchport.java la relación se asigna al igual que todas las demás relaciones que están trabajando:
@ManyToOne
@JoinColumn(nullable = false)
private KonfiguracniTemplate konfiguracniTemplateAccess;
he intentado varias formas:
@ManyToOne
@JoinColumn(name="konfiguracnitemplateaccess_id", nullable = false)
private KonfiguracniTemplate konfiguracniTemplateAccess;
o
@ManyToOne(targetEntity=KonfiguracniTemplate.class)
@JoinColumn(name="konfiguracnitemplateaccess_id", nullable = false)
private KonfiguracniTemplate konfiguracniTemplateAccess;
También he comprobado:
- ambas entidades están en el mismo paquete
- ambos están anotados "@Entity" usando "javax.persistence.Entity importación;"
- la acumulación no genera ningún mensaje de error/advertencia
- , siempre y cuando la referencia en Switchport está comentado, todo está bien
No importa lo que intento no puedo deshacerme de las "referencias una entidad desconocida "excepción" ¿Alguien puede compartir una idea de lo que está sucediendo o quizás cómo depurar el problema? La stacktrace en la parte superior de la publicación es todo lo que obtengo en los registros.
¡Toda la entrada es muy apreciada!
¿Esto sucede después de una compilación o en desarrollo? ¿Se ejecutan las pruebas de tu unidad? – hvgotcodes
Esta es una excepción de tiempo de ejecución. La construcción es exitosa, después de eso puedo acceder al formulario de inicio de sesión, enviar y obtengo la excepción. No hacemos pruebas unitarias. – Martin
, ¿verificó su jar y se aseguró de que el archivo de clase de la clase faltante esté presente en el jar después de la compilación? – hvgotcodes