Problema con el proyecto JPA en Eclipse: error en la clase anotada @Entity: la tabla "xxx" no se puede resolver
postgresql glassfish (7)
Encontré esta solución en el error "La tabla xxx no se puede resolver".
En Eclipse; Ir a Ventana -> Preferencias -> Validación, JPA Validator, apagar para Build.
"A veces estás desarrollando una aplicación junto con un nuevo esquema de base de datos para ir con ella, pero obtienes esto: El esquema" nulo "no se puede resolver para la tabla" XXXX ".
Probablemente, esto no debería estar prendido de manera predeterminada, es muy probable que la gente construya nuevas aplicaciones desde cero que construir nuevas aplicaciones que se ajusten a las viejas bases de datos; e incluso si construyen desde la antigüedad, las Herramientas JPA de Eclipse tienen una función de creación de entidades a partir de tablas ".
Intento crear un proyecto EJB + JPA simple en Eclipse (Indigo). Creé un nuevo proyecto EJB donde:
- Objetivo: Servidor de Glassfish existente
- Configuración: Módulo EJB + GlassFish Deployment Descriptor Files + Java + JPA En la ventana JPA Facet, declaro la conexión a postgres db (ping exitoso)
Tengo un problema cuando intento definir una entidad: la tabla "Empleado" no se puede resolver. Agregué la anotación @Table con el parámetro de nombre especificado, pero esto no funcionó. Mi archivo persistence.xml:
<persistence-unit name="pu_name">
<jta-data-source>jdbc/baza1Postgres</jta-data-source>
</persistence-unit>
En glassfish he definido JDBC Resource con el nombre: "jdbc / baza1Postgres"
¿Cómo sabe el "eclipse" si mi mesa existe? ¿Qué más debo configurar?
En Eclipse para hacerlo feliz tuve que crear la tabla a través de las herramientas JPA.
Haga clic derecho en Proyecto> Herramientas JPA> Generar tablas de entidades
Supongo que también puedes desactivar la validación, pero crear la tabla parece tener más sentido.
Estoy usando Eclipse. Noté que eclipse reconoce tablas cuando uso la ventana "Data Source Explorer" en el componente JPA (probablemente no es necesario compilar pero es útil para verificar la base de datos en el mismo eclipse IDE). Luego, cuando creé una conexión a la base de datos en esa ventana, obtuve el problema de cambio de datos en las propiedades de conexión:
NOt Working (la tabla no se puede resolver):
Database: my_database
URL: jdbc:mysql://localhost:3306
User Name: jpa_user
Password: jpa_pass
Reparado (agrego la base de datos en el campo URL):
Database: my_database
URL: jdbc:mysql://localhost:3306/my_database
User Name: jpa_user
Password: jpa_pass
Recuerde utilizar @Table (name = "") en sus entidades si las tablas no están en mayúsculas en la base de datos.
Otra opción que utiliza la respuesta de maxmcbyte es establecerlo solo para proyectos específicos. Haga clic derecho en el proyecto y seleccione Validación. Habilite la configuración específica del proyecto y desactive JPA Validator for Build.
Tuve este error y pude hacerlo funcionar a través de un esfuerzo muy tortuoso. Estoy usando PostgreSQL.
En primer lugar, hice lo sugerido anteriormente y desactivé la validación de la compilación. Luego ejecuté la validación de forma manual para conectar cosas. Mis pasos fueron esencialmente esto:
1: Conectar a través de Data Source Explorer a mi base de datos. Asegúrate de que la conexión esté en el estado correcto yendo a las TABLAS y haz clic en actualizar. Al presionar Actualizar en la conexión, no refrescó las tablas.
2: Probablemente opcional, pero utilicé las herramientas JPA para exportar el esquema a la base de datos. Una vez más, pulso actualizar como en el paso 1.
3: Anotar la entidad con Entidad y Tabla. Agregue el nombre en la entidad y el NOMBRE, CATÁLOGO y ESQUEMA en la anotación Tabla.
@Entity(name="DBAssembly")
@Table(name="DBAssembly",catalog="lag",schema="public")
4: ejecutar la validación de forma manual. Agregar el catálogo fue importante. Es muy exigente
Funciona pero, además de la respuesta maxmcbyte (¡Gracias!), Algunas veces es mejor aplicar esta solución solo para algunos proyectos, hágalo individualmente accediendo a: propiedades del proyecto> Validación> Activar "Configuración específica del proyecto habilitada" y luego desactivar la validación de JPA en la Columna de compilación . Ver la imagen ...
Debe especificar en su archivo persistence.xml dónde buscar las entidades, eche un vistazo al tutorial de Java EE 6 , aquí hay un ejemplo tomado de allí:
Unidades de persistencia
Una unidad de persistencia define un conjunto de todas las clases de entidad que son administradas por instancias de EntityManager en una aplicación. Este conjunto de clases de entidad representa los datos contenidos en un único almacén de datos.
Las unidades de persistencia se definen mediante el archivo de configuración persistence.xml. El siguiente es un ejemplo de archivo persistence.xml:
<persistence> <persistence-unit name="OrderManagement"> <description>This unit manages orders and customers. It does not rely on any vendor-specific features and can therefore be deployed to any persistence provider. </description> <jta-data-source>jdbc/MyOrderDB</jta-data-source> <jar-file>MyOrderApp.jar</jar-file> <class>com.widgets.Order</class> <class>com.widgets.Customer</class> </persistence-unit> </persistence>
Este archivo define una unidad de persistencia llamada OrderManagement, que utiliza un origen de datos compatible con JTA: jdbc / MyOrderDB. El archivo jar y los elementos de clase especifican clases de persistencia administradas: clases de entidad, clases incrustables y superclases asignadas. El elemento jar-file especifica los archivos JAR que son visibles para la unidad de persistencia empaquetada que contiene clases de persistencia administradas, mientras que el elemento de clase nombra explícitamente las clases de persistencia administradas.
También eche un vistazo a esta pregunta utilizando hibernate puede escanear para sus clases que tienen la anotación Entity