Are you using OpenJPA to generate your tables? If so, what is the SQL that is being generated to create this table?
2010/6/11 Håkon Sagehaug <[email protected]> > Hi > > I tried to add the column definition > > @ElementColumn(name = "ELEMENT", columnDefinition="DECIMAL(10, > 6)",nullable=false) > > But got the same when I want to persist value 2.1999999 I end up with 2.2. > Any other tips? I use openjpa 1.2.0 should I migrate to 2.0? > > cheers, Håkon > > > > On 10 June 2010 18:19, Jeremy Bauer <[email protected]> wrote: > > > Håkon, > > > > I did not find a DOUBLEUNSIGNED type supported for PostgreSQL, but could > > have missed something. > > > > This should provide what you are looking for though... > > > > @PersistentCollection > > @ElementColumn(name = "ELEMENT", columnDefinition="DECIMAL(10, > > 6)",nullable=false) > > private double[] doubleValues; > > > > JPA/OpenJPA 2.0 provides standardized support for column definitions by > > using @ElementCollection and @Column, but unlike @PersistentCollection, > > @ElementCollection cannot be applied to an array. Instead, you'd need to > > use a collection type. > > > > If you are using OpenJPA 2.0 you could modify your code as follows: > > > > @ElementCollection > > @Column(columnDefinition="DECIMAL(10,6)",nullable=false) > > private List<Double> doubleValues; > > > > public void setDoubles(Double[] doubles) { > > doubleValues = Arrays.asList(doubles); > > } > > > > public Double[] getDoubles() { > > return (Double[])doubleValues.toArray(); > > } > > > > Since List does not support primitive types, you'd also need to use the > > Double object type. You could then modify your getter and setter to > > convert > > to and from a primitive array. I didn't go that far, but it would be > > fairly > > simple. In addition, if you need to maintain the order of the array in > the > > DB, use the @OrderColumn annotation. There is an OpenJPA version for JPA > > 1.0 apps and a standardized version in JPA 2.0, same annotation name, > > different packages. > > > > hth, > > -Jeremy > > > > 2010/6/10 Håkon Sagehaug <[email protected]> > > > > > Hi all, > > > > > > I've got a persitent collection in a entity looking like this > > > > > > @PersistentCollection > > > double[] doubleValues; > > > > > > But when I store the values the, it's rounded up. So if I want to > store > > > the > > > value 2.1999999999999993 in the database it's stored as 2.2. The driver > I > > > 'm > > > using is postgresql-8.3-603.jdbc3.jar. Should I use another type in the > > > entity or is there another solution. I guess it's this issue [1], I'm > > > facing. I found that you could set column property like this > > > > > > > > > > > > > @Column(columnDefinition="DOUBLEUNSIGNED",precision=10,scale=6,nullable=false) > > > > > > But hwo can I set hat on a persitent collection? > > > > > > cheers, Håkon > > > > > > [1] > > > > > > > > > http://openjpa.apache.org/builds/latest/docs/manual/dbsupport_postgresql.html#dbsupport_postgresql_issues > > > > > >
