openjpa-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Håkon Sagehaug <hakon.sageh...@uni.no>
Subject Re: Saving a double in prosgres
Date Fri, 11 Jun 2010 06:00:22 GMT
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 <techhusky@gmail.com> 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 <hakon.sagehaug@uni.no>
>
> > 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
> >
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message