2011-10-23 21 views
11

Cada vez que hago un proyecto JPA, Eclipse informa que hay errores en mi proyecto, pero no entiendo por qué lo hace. Añadí imagen y errores a continuación:Eclipse informa de un error en mi proyecto JPA

enter image description here

Description Resource Path Location Type Column "id" cannot be resolved on table "page" Page.java /BreakpointJPA/src/no/breakpoint/domain line 14 JPA Problem

Description Resource Path Location Type Column "title" cannot be resolved on table "page" Page.java /BreakpointJPA/src/no/breakpoint/domain line 18 JPA Problem

Description Resource Path Location Type Primary key join column "id" cannot be resolved on table "page" Page.java /BreakpointJPA/src/no/breakpoint/domain line 10 JPA Problem

enter image description here

+0

¿Puede mostrar los detalles de su tabla 'página'? –

+0

Sí, todavía no he implementado las marcas de tiempo, así que esa es la razón por la que no están en la entidad de página. – LuckyLuke

+0

Entonces, ¿supongo que Eclipse está diciendo que su Entidad no está reflejando adecuadamente el estado de la base de datos? ¿Cómo sabe Eclipse con qué base de datos está trabajando? Tal vez no está utilizando la base de datos que se muestra 'adesnqhp_javaee'? –

Respuesta

26

que he tenido el mismo problema, la solución para mí fue actualizar la conexión de base de datos.

Abra la vista JPA, busque el explorador de la fuente de datos. Allí abre la Conexión de la base de datos, se conecta con su base de datos y pulsa actualizar. Luego realice algunos cambios en su archivo y guárdelo, agregué una anotación @Column (name = "") a mi campo de Id. Después de eso, el mensaje de error desapareció y realicé la anotación de Columna.

El problema parece ser que eclipse lee las tablas de la base de datos después de establecer la primera conexión, después de que la conexión se cierra. Entonces, si tú, como yo, hiciste algunos cambios después de esta primera conexión en tu base de datos, como cambiar el nombre del campo de foo_id a solo id, eclipse no lo sabía y viene con este error.

+5

Me limitaré a señalar que también puede forzar una validación de JPA manual utilizando Project Explorer (Juno Service Release 2). Haga clic derecho sobre el proyecto, seleccione "Validar". Esto evita tener que hacer un cambio no deseado en el archivo fuente solo para forzar la validación. – mrjmh

+0

Importé clases de tablas db existentes y obtenía "el catálogo X no se puede resolver para la tabla Y". Acabo de eliminar la información del catálogo (que se configuró con el nombre del esquema de la base de datos desde el que se importaron las entidades) en el código Java para todas las clases generadas por Eclipse y el problema desapareció. – Nick

0

¿Se puede probar esto:

@Id 
@GeneratedValue(strategy=GenerationType.AUTO) 
@Column(name = "id", unique=true, nullable=false) 
private int id 
+0

Similar para título: @Column (name = "title") –

0

trate de hacer asistente de código dentro de las comillas de @Column (name =" "). O abra la vista Detalles de JPA y vea el combo de nombre de columna para ver las opciones de columna. No hay ningún error de validación en la anotación @Table (name = "page"), por lo que parece que Eclipse está buscando la tabla de la página.

0

Las anotaciones son correctas, ¿está seguro de que su clase de proyecto es buena? intente y construya la entidad sin los campos id y title antes que nada.

1

¿Tiene las interfaces JPA/JPA2 incluidas en su proyecto? Si usa maven, necesita incluir una dependencia para las clases. Supongo que lo son, ya que no aparecen líneas rojas en las declaraciones de importación, pero solo para estar seguro, debe validar que existen.

Para una dependencia JPA2, puede utilizar:

<dependency> 
    <groupId>org.hibernate.javax.persistence</groupId> 
    <artifactId>hibernate-jpa-2.0-api</artifactId> 
    <version>1.0.0.Final</version> 
</dependency> 
+0

Acabo de volver a leer su pregunta y me di cuenta de que mi respuesta probablemente no estaba relacionada con el problema, pero la dejé aquí como información útil para otra persona, ya que se relaciona con la cuestión. –

2

Lea esto si usted quiere resolver su problema fácilmente

No hay ningún problema en su base de datos. Solo tiene que crear una nueva conexión desde Eclipse a la misma base de datos que hacemos durante la adición de capacidades de JPA al proyecto.

Pasos: -
Cree una nueva base de datos desde el símbolo del sistema mysql.
Haga clic derecho en su proyecto en Eclipse/MyEclipse, luego vaya a Propiedades.
Haga clic en la pestaña Eclipse/MyEclipse a la izquierda y luego haga clic en el submenú JPA.
Luego haga clic en Crear nueva conexión. Pon un nuevo nombre de conexión. Y agrega la misma base de datos. (También puede optar por cambiar su base de datos, pero la misma base de datos también lo hará).
Conexión de prueba, y haga clic en Finalizar.
La primera vez no mostrará ese nombre de conexión recién creado. Simplemente haga clic en Aceptar para cerrar esa ventana.

A continuación, haga clic con el botón secundario en Project y luego haga clic en Propeties.Ahora puede ver su Conexión recién creada en esa lista desplegable de Conexión. Seleccione eso y haga clic en Aceptar.

Su error se desvanecerá.

Posible causa de este error: -
Eclipse crea una conexión con su base de datos cada vez que se conecta usando cualquier proyecto que use persistence.xml, pero solo por primera vez.
Por lo tanto, cualquier cambio posterior, especialmente desde el lado de la base de datos (nombre de la tabla, etc.) arrojará un error desde Eclipse.

Gracias.

4

Hilo viejo, sin embargo, tuve el mismo problema y lo resolví con un enfoque aún más rápido.

  1. Propiedades del proyecto -> APP
  2. Cambio de conexión a. Presione aplicar
  3. Cambiar la conexión al valor anterior. Presione aplicar

Espero que esto ayude a alguien.

2

Tuve el mismo problema. Aquí es cómo lo resolví

  1. refrescado la conexión
    • ir a los datos Source Explorer
    • Seleccione la conexión y haga clic derecho
    • seleccione Actualizar
  2. Limpiar el proyecto
    • Ir t Menú de proyecto
    • seleccione limpia
0

En mi caso fue simplemente vieja conexión en Propiedades-> JPA-> Agregar conexión. Así que actualizar no ayudará. Nueva conexión para base de datos correcta ayudará cuando la actualización no lo hará.

2

Vaya a Data Source Explorer, desconecte la conexión de la base de datos, después de conectar la conexión de la base de datos, haga clic con el botón derecho en su proyecto y haga clic en validar.

Espero que te ayude.

Cuestiones relacionadas