2012-02-25 38 views
5

Tôi đang cố gắng duy trì một BigDecimal trong một ứng dụng Grails 2.0 mới, và nó không hoạt động ở mức độ nào tôi mong đợi.Grails 2.0 rắc rối với sự tồn tại của BigDecimal

tôi thực hiện một ứng dụng mới có tên gọi l2bigdec và thêm lớp miền:

package l2bigdec 

class PlayMe { 
    BigDecimal imStupidOrSomething 
    static constraints = { 
    } 
} 

Sau đó, tôi đặt mã này trong bootstrap:

import l2bigdec.* 
class BootStrap { 

    def init = { servletContext -> 
    def thisThingIHate = new PlayMe(imStupidOrSomething:0.912345).save(failOnError:true) 
    println thisThingIHate.imStupidOrSomething 
    PlayMe.withSession{it.clear()} 
    def getItBack = PlayMe.find{it} 
    println getItBack.imStupidOrSomething 
    } 
    def destroy = { 
    } 
} 

nào in:

0.912345 
0.91 

Tại sao nó không in 0.912345 cả hai lần? Tôi không hiểu BigDecimal?

Trả lời

10

Ràng buộc quy mô cho phép bạn kiểm soát này:

... 
BigDecimal myNum 

static constraints = { 
    myNum(scale: 6) 
} 
... 

http://grails.org/doc/latest/ref/Constraints/scale.html

+0

gì nếu tôi thực sự muốn có một BigDecimal và không phải là một phao tròn và nó cần phải giữ gìn mỗi chữ số tôi cho nó? Điều này không còn khả thi trong phiên bản 2.0? – Mikey

+0

Tôi có thể đặt tỷ lệ mặc định lớn hơn để không phải truy cập dự án của mình khi cập nhật mọi BigDecimal không? – Mikey

+0

Nếu bạn đang nhắm mục tiêu một RDBMS cụ thể, một số có các loại chính xác tùy ý bạn có thể sử dụng (ví dụ 'NUMERIC' trong PostgreSQL). Nếu không, không có cách nào dễ dàng để tôi lưu giữ các chữ số tùy ý. Tôi cũng không biết về một điểm duy nhất để đặt tỷ lệ mặc định. Nếu tên thuộc tính BigDecimal của bạn tương tự nhau giữa các lớp, bạn có thể sử dụng 'grails.gorm.default.constraints', được mô tả tại đây: http://grails.org/doc/latest/ref/Constraints/Usage.html –

Các vấn đề liên quan