{"id":130,"date":"2016-02-26T12:20:12","date_gmt":"2016-02-26T11:20:12","guid":{"rendered":"https:\/\/www.schoenberg-solutions.de\/arndtblog\/?p=130"},"modified":"2025-08-13T10:27:39","modified_gmt":"2025-08-13T08:27:39","slug":"spooky-exceptions-3-internal-exception-org-postgresql-util-psqlexception-der-in-sql-fuer-eine-instanz-von-zu-verwendende-datentyp-kann-nicht-abgeleitet-werden-benutzen-sie-setobject","status":"publish","type":"post","link":"https:\/\/www.schoenberg-solutions.de\/arndtblog\/?p=130","title":{"rendered":"Spooky Exceptions (3) &#8211; Internal Exception: org.postgresql.util.PSQLException: Der in SQL f\u00fcr eine Instanz von &#8230;. zu verwendende Datentyp kann nicht abgeleitet werden. Benutzen Sie &#8217;setObject()&#8216; mit einem expliziten Typ, um ihn festzulegen."},"content":{"rendered":"\n<p>Die Anwendung, bei deren Entwicklung die Exception aufgetreten ist, basiert auf<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Java 8<\/li>\n\n\n\n<li>Wildfly 10.x<\/li>\n\n\n\n<li>Eclipselink<\/li>\n\n\n\n<li>Postgres 9.x<\/li>\n<\/ul>\n\n\n\n<p><strong>Situation<\/strong><\/p>\n\n\n\n<p>Folgende Exception wurde bei einer JPA Suchanfrage geworfen<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">09:54:31,868 INFO  [stdout] (default task-55) [EL Warning]: 2016-02-26 09:54:31.868--UnitOfWork(1660853426)--<br>Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.6.2.v20151217-774c696): org.eclipse.persistence.exceptions.DatabaseException<br>09:54:31,868 INFO  [stdout] (default task-55) Internal Exception: org.postgresql.util.PSQLException: <br>Der in SQL f\u00fcr 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.<br>09:54:31,868 INFO  [stdout] (default task-55) Error Code: 0<br>09:54:31,868 INFO  [stdout] (default task-55) Call: SELECT t3.amount, t3.description, t3.wage_type_type_id, ...<br><br>...<br><br>09:54:31,872 ERROR [org.jboss.as.ejb3.invocation] (default task-55) WFLYEJB0034: EJB Invocation failed on component <br>AccountingManualWageTypeDataFacade for method <br>public java.util.List de.schoeso.desy.ejb.facade.hr.AccountingManualWageTypeDataFacade.findByVariousParameters(<br>de.schoeso.desy.ejb.entity.hr.employee.Employee,de.schoeso.project.ejb31.entity.org.unit.UnitOfOrganisation,<br>de.schoeso.desy.ejb.entity.hr.AccountingPeriod): javax.ejb.EJBException: javax.persistence.PersistenceException: <br>Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.6.2.v20151217-774c696): <br>org.eclipse.persistence.exceptions.DatabaseException<br>Internal Exception: org.postgresql.util.PSQLException: Der in SQL f\u00fcr eine Instanz von de.schoeso.desy.ejb.entity.hr.AccountingPeriod <br>zu verwendende Datentyp kann nicht abgeleitet werden. Benutzen Sie 'setObject()' mit einem expliziten Typ, um ihn festzulegen.<br>Error Code: 0<br>Call: SELECT t3.amount, t3.description ...<br><\/pre>\n\n\n\n<p><strong>L\u00f6sung<\/strong><\/p>\n\n\n\n<p>In diesem Beispiel wurde eine JPA Query f\u00fcr eine Klasse erstellt, die auf ein anderes Objekt (AccountingPeriod) verweist. In den Join Columns war eines von zwei Attributen, falsch geschrieben und mit , insertable = false, updatable = false gekennzeichnet. Nach Korrektur des Schreibfehlers lief die Abfrage fehlerfrei.<\/p>\n\n\n\n<p><strong>2te Situation &#8211; 2025<\/strong><\/p>\n\n\n\n<p>Eine \u00e4hnliche Exception trat nochmals auf<\/p>\n\n\n\n<p>Exception in thread &#8222;AWT-EventQueue-0&#8220; jakarta.ejb.EJBException: jakarta.persistence.PersistenceException: Exception [EclipseLink-4002] (Eclipse Persistence Services &#8211; 4.0.2.v202306130914): org.eclipse.persistence.exceptions.DatabaseException<br>Internal Exception: org.postgresql.util.PSQLException: Der in SQL f\u00fcr eine Instanz von de.ecr.bean.org.nation.entity.Nation zu verwendende Datentyp kann nicht abgeleitet werden. Benutzen Sie &#8217;setObject()&#8216; mit einem expliziten Typ, um ihn festzulegen.<br>Error Code: 0<br>Call: SELECT t3.id, t3.billing_category_type, t3.centralized_billing, t3.collective_confirm_active, t3.collective_confirm_period_type, t3.commercial_register, t3.company_domicile, t3.company_name_delivery, t3.company_name_invoice, t3.form_of_organisation, t3.general_manager, t3.inactive, t3.information, t3.inventory_request, t3.margensystem, t3.name, t3.payment_target_days, t3.process_block, t3.process_one_timer, t3.service_partner, t3.logo_type, t3.service_provider_number, t3.shipping_address_exists, t3.short_name, t3.tax_number, t3.timeLastChange, t3.time_request_exceeded, t3.vat_number FROM sp_service_provider t3 LEFT OUTER JOIN sp_service_provider t0 ON (t3.id = t0.id) LEFT OUTER JOIN ADDRESS t1 ON (t1.id = t0.shipping_address_id) LEFT OUTER JOIN ADDRESS t2 ON (t2.id = t0.billing_address_id), org_nation t5, org_nation t4 WHERE ((LOWER(t3.service_provider_number) LIKE ? AND (CASE WHEN t3.shipping_address_exists THEN ELSE END = ?)) AND ((t4.nation_id = t1.land) AND (t5.nation_id = t2.land)))<br>bind =&gt; [2 parameters bound]<\/p>\n\n\n\n<p><strong>L\u00f6sung<\/strong><\/p>\n\n\n\n<p>In der Meldung ist zu sehen, dass das &#8222;CASE WHEN&#8220; etwas merkw\u00fcrdig aussieht. Ursache war hier, dass im &#8222;CASE WHEN&#8220; mit Objekten als Ergebnis gearbeitet wurde. Dies scheint aktuell nicht zu funktionieren. Als auf den primitiven Typ der &#8222;id&#8220; in dem Objekt gewechselt wurde (String), konnte die Abfrage verarbeitet werden.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Die Anwendung, bei deren Entwicklung die Exception aufgetreten ist, basiert auf Situation 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&#8211;UnitOfWork(1660853426)&#8211;Exception [EclipseLink-4002] (Eclipse Persistence Services &#8211; 2.6.2.v20151217-774c696): org.eclipse.persistence.exceptions.DatabaseException09:54:31,868 INFO [stdout] (default task-55) Internal Exception: org.postgresql.util.PSQLException: Der in SQL f\u00fcr eine Instanz von de.schoeso.desy.ejb.entity.hr.AccountingPeriod zu verwendende Datentyp kann [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4,7],"tags":[],"class_list":["post-130","post","type-post","status-publish","format-standard","hentry","category-jee","category-wildfly"],"_links":{"self":[{"href":"https:\/\/www.schoenberg-solutions.de\/arndtblog\/index.php?rest_route=\/wp\/v2\/posts\/130","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.schoenberg-solutions.de\/arndtblog\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.schoenberg-solutions.de\/arndtblog\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.schoenberg-solutions.de\/arndtblog\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.schoenberg-solutions.de\/arndtblog\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=130"}],"version-history":[{"count":2,"href":"https:\/\/www.schoenberg-solutions.de\/arndtblog\/index.php?rest_route=\/wp\/v2\/posts\/130\/revisions"}],"predecessor-version":[{"id":345,"href":"https:\/\/www.schoenberg-solutions.de\/arndtblog\/index.php?rest_route=\/wp\/v2\/posts\/130\/revisions\/345"}],"wp:attachment":[{"href":"https:\/\/www.schoenberg-solutions.de\/arndtblog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=130"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.schoenberg-solutions.de\/arndtblog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=130"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.schoenberg-solutions.de\/arndtblog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=130"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}