Java 从Oracle DB提取双类型字段时,会自动将.0追加到该值

Java 从Oracle DB提取双类型字段时,会自动将.0追加到该值,java,database,oracle,spring-boot,jpa,Java,Database,Oracle,Spring Boot,Jpa,我正在使用JPA将Oracle DB合并到spring boot中。我有一个实体,其中字段定义如下: @Column(name = "TOTAL_PREMIUM", precision = 12, scale = 2) private double totalPremium = 0; 在DB中,我可以看到的存储值如下所示: 但当我尝试使用JPARepository获取此值时: Quotes quotes = quoteRepo.findOne(quoteID); quotes.getTota

我正在使用JPA将Oracle DB合并到spring boot中。我有一个实体,其中字段定义如下:

 @Column(name = "TOTAL_PREMIUM", precision = 12, scale = 2)
private double totalPremium = 0;
在DB中,我可以看到的存储值如下所示:

但当我尝试使用JPARepository获取此值时:

Quotes quotes = quoteRepo.findOne(quoteID);
quotes.getTotalPremium()
它给出了2.01348.0像这样,对我来说有点不匹配

是否有任何方法可以获得保存的内容,即值应为21348

如果它是用一些十进制值保存的,比如1389.48,那么它应该返回我1389.48,如果我保存1389,那么它应该返回1389


非常感谢您的帮助。

您的列已映射到双精度类型:

@Column(name = "TOTAL_PREMIUM", precision = 12, scale = 2)
private double totalPremium = 0;
在这里,您将丢失在数据库中写入的任何数量的尾随零,因为如果数据库的Java代码中有2.000或2.0或2,您将得到相同的双值2


因此,如果以后需要将其与字符串进行比较,则需要将totalPremium映射到实体中的字符串并比较字符串。或者从您比较的字符串中解析双精度值,并比较两个双精度值。我认为你应该做后者,因为如果你比较数字,你应该用数学的方法来比较

如果将值存储到双变量中,则2.0=2=2.000;)所以没问题there@VeselinDavidov是的,你是对的。但也有匹配精确值的情况,就像我从第三方获得不带小数的值一样。然后是对保存的数据的查询,如果它是相同的或不好的,如果你收到的值没有小数点,那么。。。将其解析为整数,因为此时它不是一个双精度。为什么向下投票,这是我真正的问题,我已经很好地描述了它,如果我需要做任何更正,请让我知道,然后您需要将其映射到字符串,并在之后将其作为字符串进行比较。如果你把它映射到double,你应该把它当作double在我的情况下,我没有失去尾随的零,实际上,当我试图得到它时,值被附加了.0,但是你可以在图像中看到保存的值没有.0,你能详细说明一下吗?你得到它是什么意思?您的totalPremium值是双倍值。它是2(或相同的2.0)。你在哪里看到它2.0?你是把它变成字符串还是什么的?请检查我更新的问题,我想得到如下引用。getTotalPremium()