2016-08-08 16 views
0

Ich benutze Hibernate 4.3.1 endgültige Version von Hibernate. In der Hibernate-Mapping-Datei habe ich diese Eigenschaft als eine ganze Zahl definiert. Für zB: <property name= "jobNo" type="integer">Classcast Ausnahme während der Ausführung Projection Count Abfrage im Ruhezustand

Die verwendete Datenbank ist DB2. In dem die JobNo Spalte als Integer definiert ist. Beim Versuch, die Anzahl der jobNo mit Projection API retrive als:

criteria.setProjection(Projections.count(jobNo)); 
criteria.uniqueResult(); 

Es ist, als Long zurück. Idealerweise sollte es als Integer zurückgegeben werden.

Ich bin neu in diesem kann mir jemand helfen?

Antwort

0

Es ist so lange zurück. Idealerweise sollte es als Ganzzahl zurückgegeben werden.

Sie haben nicht die Hand darauf. Es wird von Ihrer JPA-Implementierung gehandhabt (Hibernate hier).

Wenn Sie wissen, dass der von count zurückgegebene Wert den Integer max-Wert (2147483647) nicht überschreiten kann, sollte dies kein Problem darstellen. Sie können Long in Integer umwandeln. Wenn Sie Zweifel haben, können Sie überprüfen, dass der Wert für die Länge nicht den Wert von Integer max überschreitet.
Wie auch immer, ich rate Ihnen zu einem Number anstelle einer zu werfen, können Sie Überraschung vermeiden, wenn Sie die JPA-Implementierung ändern.

int jobNo = ((Number)criteria.uniqueResult()).intValue(); 
+0

Vielen Dank es funktionierte für mich: D –

+0

Großartig. Bitte schön :) – davidxxx