我试图通过springdatajpa(hibernate)将paymentamount字段保持为大十进制。我对列的定义如下:@列(精度=19,刻度=3)但我面临的问题是,在持久化时,在对数字进行舍入时使用了向上策略。例如,如果我尝试保持0.12345,它将保存0.124。在这种情况下我需要向下舍入策略,我不知道如何设置。我可能可以在构造函数/设置器中为我的大小数设置比例和舍入策略,但这对我来说似乎不是一个好的选择。是否有一些注解或参数需要传递给我的jpa,以便它在舍入时使用向下策略?
ldxq2e6h1#
您可以在这里查看带jpa的bigdecimal和一些解决方案方法的flexible scale。我不认为它可以控制一些财产。我想说的是,它也不属于域层,因为它是一个“业务逻辑”来定义价格是如何舍入的。
8dtrkrch2#
您想做的是您的业务需求,例如,在服务中进行舍入是可以的。就像通过sql执行普通插入一样,您必须自己进行舍入。把它放在塞特是绝对好的,比如:
public void setNumber(BigDecimal number) { this.number = number.setScale(SCALE, RoundingMode.DOWN); }
2条答案
按热度按时间ldxq2e6h1#
您可以在这里查看带jpa的bigdecimal和一些解决方案方法的flexible scale。我不认为它可以控制一些财产。我想说的是,它也不属于域层,因为它是一个“业务逻辑”来定义价格是如何舍入的。
8dtrkrch2#
您想做的是您的业务需求,例如,在服务中进行舍入是可以的。就像通过sql执行普通插入一样,您必须自己进行舍入。
把它放在塞特是绝对好的,比如: