Bonjour a tous,

J'ai un problème pour enregistrer un BigDecimal en base MySQL en utilisant JPA via annotation.

J'ai donc une table toto dans ma base qui contenant un decimal(18,5) et un classe Toto comme suit :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
@Column(name = "bigd")
    private BigDecimal bd;
 
    public BigDecimal getBd() {
        return bd;
    }
 
    public void setBd(BigDecimal bd) {
        this.bd = bd;
    }
Tous a bien fonctionné au détail près que lors de l'enregistrement, une valeur telle que 45.5 devient 45.50000 ce qui ne me va pas du tout car je veux pouvoir conserver la précision du BigDecimal.

La précision du BigDecimal est ici importante car il s'agit d'une application internationale devant accepter au moins deux types de devises différentes aux niveaux des décimales.

Je me suis donc tourné vers le format VarChar(20) qui laisse une marge suffisante et stocke correctement dans la base sans ajout de zéro (normal, c'est une chaine de caractère me direz vous).
Je pensais donc faire de la sorte afin de rendre le BigDecimal compatible avec le VarChar via JPA :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
    @Column(name = "bigd")
    public String getBd() {
        return (bd==null)?"":bd.toPlainString();
    }
 
    public void setBd(String bd) {
        this.bd = (bd != null)?new BigDecimal(bd):null;
    }
 
    private BigDecimal bd;
Hélas, cette méthode ne fonctionne pas non plus

Je me tourne donc vers vous pour tenter de trouver une solution.
Merci d'avance