hibernate retour BigDecimal type de données au lieu de long
Hibernate nommé requête renvoie un BigDecimal pour une colonne de type de données NOMBRE.
select col1 as "col1" from table1 union select col2 as "col1" from table2
Sur le côté client, j'attends le type de données de col1 à être long (primitive)
Je fais ceci:
<return-scalar column="col1" type="java.lang.Long" />
ou
<return-scalar column="col1" type="long" />
Dans les deux cas, j'obtiens :
java.lang.ClassCastException: java.math.BigDecimal incompatible with java.lang.Long
Comment puis-je résoudre ce problème? Mon suspiscion, quelque chose de mal avec l'aliasing?
Êtes-vous à l'aide de Oracle? L'Oracle NUMBERtype cartes à BigDecimal.
Oui. Oracle 10g. Comment convertir à la longue?
Oui. Oracle 10g. Comment convertir à la longue?
OriginalL'auteur Victor | 2011-03-21
Vous devez vous connecter pour publier un commentaire.
Oracle NOMBRE de maps pour BigDecimal prolongée par défaut. Essayez de définir le type BigDecimal.
OriginalL'auteur dseibert
Je ne sais pas ce que le problème est avec votre hibernate, mais comme une solution de contournement, un truc qui permet de ne pas se soucier de ce que java
Number
type Hibernate query retourne consiste à jeter la valeur retournéeNumber
et appel.longValue()
:De cette façon, vous n'avez pas de soins si la requête retourne
Long
,BigDecimal
,BigInteger
,Short
tant qu'il s'inscrit dans une javalong
.OriginalL'auteur Dave Moten
Oui, Hibernate Cartes Oracle Numéro de Type BigDecimal en Java.
Depuis BigDecimal calculs sont coûteuses en Java, une fois que Vous obtenez le BigDecimal en Java, écrire un Utilitaire pour convertir les BigDecimal Collection en Entier ou le Long de la collection, en fonction de Votre taille des données.
OriginalL'auteur kanaparthikiran
Depuis Jpa/Hibernate par des cartes par défaut le Nombre de type de données à BigDecimal, vous ne pouvez pas modifier ce comportement.
Vous pouvez gérer la conversion dans le service méthodes, vous avez.
Convertir BigDecimal int/long basé sur ce que l'entreprise doit à l'aide de
bigDecimal.intValue() or bigDeciml.intValueExact() or bigDecimal.longValue()
OriginalL'auteur Vikram