spring - Storing trailing zeroes in database with JPA and Oracle -


i need store prices in database. i'm using jpa, i've got model this:

@entity @table(name="products") public class product {      @id     @generatedvalue(strategy=generationtype.identity)     private long id;      @column(name="price")        private float price; } 

the problem when fill price form inputs values "4.20", on oracle database "4.2", losing trailing zero.

how can solve problem?

edit: since i'm using jpa, have avoid writing queries in native oracle dialect. store products (with prices) write em.persist(product), em entitymanager

you can't solve it, , i'd suggest it's not problem. that's how oracle stores number values: least precision needed. if entered price 4.00 stored 4.

note java won't default 2 decimals either when displaying value. need specify number of decimal places.

and, if possible, i'd use bigdecimal instead of float price. float type isn't precise. alternative use 1 of integer types (int or long) , manage decimal places yourself.

to format price display in java code, use string.format("%.2f", price).

to format price in oracle query, use to_char:

select to_char(price, '999999990.00'), etc. 

choose number of placeholders that's best you, , note oracle put space @ beginning of result. it's meant hold minus sign if number negative, zero/positive it's space. rid of space use fm modifier in to_char:

select to_char(price, 'fm999999990.00'), etc. 

Comments

Popular posts from this blog

css - Which browser returns the correct result for getBoundingClientRect of an SVG element? -

gcc - Calling fftR4() in c from assembly -

Function that returns a formatted array in VBA -