Die Anwendung, bei deren Entwicklung die Exception aufgetreten ist, basiert auf
- Java 8
- Wildfly 10.x
- Eclipselink
- Postgres 9.x
Folgende Exception wurde bei einer JPA Suchanfrage geworfen
09:54:31,868 INFO [stdout] (default task-55) [EL Warning]: 2016-02-26 09:54:31.868--UnitOfWork(1660853426)-- Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.6.2.v20151217-774c696): org.eclipse.persistence.exceptions.DatabaseException 09:54:31,868 INFO [stdout] (default task-55) Internal Exception: org.postgresql.util.PSQLException: Der in SQL für eine Instanz von de.schoeso.desy.ejb.entity.hr.AccountingPeriod zu verwendende Datentyp kann nicht abgeleitet werden. Benutzen Sie 'setObject()' mit einem expliziten Typ, um ihn festzulegen. 09:54:31,868 INFO [stdout] (default task-55) Error Code: 0 09:54:31,868 INFO [stdout] (default task-55) Call: SELECT t3.amount, t3.description, t3.wage_type_type_id, ... ... 09:54:31,872 ERROR [org.jboss.as.ejb3.invocation] (default task-55) WFLYEJB0034: EJB Invocation failed on component AccountingManualWageTypeDataFacade for method public java.util.List de.schoeso.desy.ejb.facade.hr.AccountingManualWageTypeDataFacade.findByVariousParameters( de.schoeso.desy.ejb.entity.hr.employee.Employee,de.schoeso.project.ejb31.entity.org.unit.UnitOfOrganisation, de.schoeso.desy.ejb.entity.hr.AccountingPeriod): javax.ejb.EJBException: javax.persistence.PersistenceException: Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.6.2.v20151217-774c696): org.eclipse.persistence.exceptions.DatabaseException Internal Exception: org.postgresql.util.PSQLException: Der in SQL für eine Instanz von de.schoeso.desy.ejb.entity.hr.AccountingPeriod zu verwendende Datentyp kann nicht abgeleitet werden. Benutzen Sie 'setObject()' mit einem expliziten Typ, um ihn festzulegen. Error Code: 0 Call: SELECT t3.amount, t3.description ...
In diesem Beispiel wurde eine JPA Query für eine Klasse erstellt, die auf ein anderes Objekt (AccountingPeriod) verweist. In den Join Columns ware eines von zwei Attributen, falsch geschrieben und mit , insertable = false, updatable = false gekennzeichnet. Nach Korrektur des Schreibfehlers lief die Abfrage fehlerfrei.