Bonjour,

J'ai eu des soucis avec une librairie et a force de chercher j'ai fini par mettre le doigt sur un souci d'insertion assez basique mais qui me laisse perplexe.

J'ai une table comme suit :


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
create table TESTDBUNIT
(
ID NUMERIC(5) IDENTITY PRIMARY KEY NOT NULL,
FIELD_1 NUMERIC(1,0) default 0,
FIELD_2 NUMERIC(1,0) default 0,
)
go
D'après plusieurs docs, l'équivalent de NUMERIC est BigDecimal
(http://jtds.sourceforge.net/typemap.html ou Hibernate)

Cependant j'ai un souci avec le code suivant :

Class.forName("com.sybase.jdbc2.jdbc.SybDriver");
Connection conSybase = DriverManager.getConnection("jdbc:sybase:Tds:neptune.sungard-finance.fr:4126", "cis", "***");

PreparedStatement stmt =conSybase.prepareStatement("INSERT INTO TESTDBUNIT VALUES (?, ?)");

stmt.setLong(1,Long.valueOf(1));
stmt.setBigDecimal(2,BigDecimal.valueOf(1));

stmt.executeUpdate();
stmt.close();
conSybase.close();


Des deux valeurs, seul celle initialisé avec setLong fonctionne. L'autre valeur est inséré a 0.

Ca fonctionne dans tout les cas si j'ai un NUMERIC(5) à la place de NUMERIC(1), ca fonctionne.

J'ai eu ce souci avec DBunit qui fait justement un mapping NUMERIC => BigDecimal.


Personne n'a jamais rencontré ce problème ?