Spooky Exceptions (3) – Internal Exception: org.postgresql.util.PSQLException: Der in SQL für eine Instanz von …. zu verwendende Datentyp kann nicht abgeleitet werden. Benutzen Sie ’setObject()‘ mit einem expliziten Typ, um ihn festzulegen.


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.

Du hast Fragen oder Anmerkungen? Kontakt: arndt@schoenb.de

,