openjpa-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Craig L Russell <Craig.Russ...@Sun.COM>
Subject Re: @Column with precision and scale - how does it work?
Date Tue, 10 Apr 2007 22:20:02 GMT
According to the Persistence specification, the @Column annotation says:

int precision (Optional) The precision for a decimal (exact
numeric)column.(Appliesonlyifadecimalcolumn is used.)
0 (Value must be set by
developer.)
int scale (Optional) The scale for a decimal (exact
numeric)column.(Appliesonlyifadecimalcolumn is used.)
0
[sic]

So unless you are using an exact numeric type for your column  
(NUMERIC or DECIMAL) a JPA provider should simply ignore the type.

The intent of this part of the specification is not to provide some  
field-level behavior, for example to convert the data on its way to  
or from the database, but simply to give the provider some  
information that would allow it to create a reasonable column type  
for schema creation.

Craig

On Apr 10, 2007, at 2:59 PM, Michael Dick wrote:

> I'm sorry, I misunderstood your question.
>
> I'm afraid I don't know how we determine when to apply the scale and
> precision.
>
> In this case the value should be ignored, since there's no way to  
> set it on
> the column. If the attribute was of type BigDecimal then I think the
> precision and scale should apply.
>
> The catch here is that it looks like we're mapping BigDecimal to  
> DOUBLE so
> that won't work. I'll have to take a closer look to determine where  
> that
> mapping occurs, and what the correct mapping(s) should be.
>
> Would you mind opening a JIRA report for the problem?
> http://issues.apache.org/jira/browse/OPENJPA
>
> -Mike
>
> On 4/10/07, Jacek Laskowski <jacek@laskowski.net.pl> wrote:
>>
>> On 4/10/07, Michael Dick <michael.d.dick@gmail.com> wrote:
>> > I don't think Derby supports specifying the precision on type  
>> DOUBLE
>> (maybe
>> > other datbases do).
>>
>> You're right - it doesn't.
>>
>> > You should be able to specify the precision through the @Column
>> annotation.
>> > I believe @Column(columnDefinition="DECIMAL(5,2)") will
>> > work.
>>
>> DECIMAL is a synonim of NUMERIC and either works well.
>>
>> > I'm not sure whether precision=x, scale=y with a type that maps to
>> > DECIMAL instead of DOUBLE.
>>
>> That's my question how OpenJPA recognizes whether the attributes
>> should be used or not. I don't think precision and scale are not used
>> at all.
>>
>> Jacek
>>
>> --
>> Jacek Laskowski
>> http://www.JacekLaskowski.pl

Craig Russell
Architect, Sun Java Enterprise System http://java.sun.com/products/jdo
408 276-5638 mailto:Craig.Russell@sun.com
P.S. A good JDO? O, Gasp!


Mime
View raw message