JPA BigInteger und Langform
Habe ich ein Stück code wie folgt:
CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<Offer> query = cb.createQuery(Offer.class);
Root<Offer> root = query.from(Offer.class);
query = query.select(root).where(cb.equal(root.get(Offer_.companyID), company.getId()));
return em.createQuery(query).getResultList()
Nun, das sieht schön und gut, aber es gibt mir Probleme. Beide bieten.companyID und Unternehmen.id sind lang.
Hier ist das, was log zeigt mir, dass hibernate ist zu tun:
Hibernate: SELECT C.id FROM company C INNER JOIN company_operators cm
ON cm.company_id = c.id WHERE cm.operators_id = '503'
- Und dies ist der Fehler, den ich bekommen:
12:47:00,581 ERROR [org.jboss.ejb3.invocation] (http--0.0.0.0-9080-5) JBAS014134: EJB Invocation failed on component OfferRepository for method public java.util.List org.jboss.tools.example.richfaces.data.OfferRepository.getOffersbyMemberId(java.lang.Long) throws java.lang.Exception: javax.ejb.EJBException: java.lang.ClassCastException: java.math.BigInteger cannot be cast to java.lang.Long
Was könnte hier das problem?
InformationsquelleAutor Zlatko | 2014-01-05
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gut, ich denke ich habe die Antwort gefunden.
Einer Zeile über dem code, den ich gezeigt habe, war
Daher Unternehmen.getId() in meiner Abfrage war, Holen Unternehmen Einheit von postgresql. Und in diesem Prozess, es cast id in 'BigInteger', implizit.
Also, was ich tun musste, war die explizite Umwandlung nach Long, und jetzt ist meine Methode sieht wie folgt aus:
InformationsquelleAutor Zlatko
Es hängt davon ab, welche Art Sie haben angegeben in Ihrer Person und in dem, was ist in der Tabelle Spalte.
Es muss gleich sein. Überprüfen Sie, ob beide gleich sind.
InformationsquelleAutor Neeraj
In Ihre Person, Sie haben
Long
für die zahlen. Sie müssen ändern Sie diese inBigInteger
. Ihre JPA ist die Rücksendung SieBigInteger
.Diese Dinge ändern wie folgt:
mit
Ich weiß nicht, warum. Ich habe eine Anwendung(erstellt mit JDeveloper) für Weblogic war es mit
Long
, aber wenn ich die gleiche Anwendung wieder(mit einer anderen version des JDeveloper), es gab mirBigInteger
. Datenbank war oracle. Ich kann vermuten, kann es sein, das Problem der JPA version. Oder können wir etwas ändern müssen in der Konfiguration irgendwo! Aber ich bin mir nicht bestätigt.Scheint, wie JPA imlicitly wirft Sachen um, was es denkt, es ist.
InformationsquelleAutor Sabuj Hassan