Spring Data JPA (MySQL) 以指数形式而不是数字形式保存字符串

Spring Data JPA (MySQL) saves String in exponential form rather than as a number

我使用 Spring Data JPA 在数据库中保存 phone 号码,

在模型中我定义了这个
private String directPhone;

同时保存 supplier.directPhone="99250397679"

在数据库中以指数形式保存

以这种形式保存direct_phone: 9.925039767E9

Supplier supplier=supplierRepository.findOne(new Long(1));

并在收到它时以指数形式给我。

但我想要字符串形式。帮助我进入字符串形式。 year=2005 也发生了同样的事情,它保存了 year=2005.0

首先,它不应该将字符串保存为数据库中的指数。 DB里面的table列是varchar(10)吗? 其次,如果你需要将那些字符串转换成你想要的,你可以这样做:

要删除点:

direct_phone = direct_phone.replaceAll("\.", "");

删除 'E':

direct_phone = direct_phone.replaceAll("[E]","")

这与 Spring 数据没有任何关系。您也遇到了普通 JDBC 的问题。

MySQL 定义各种 numeric types and you're probably using FLOAT, DOUBLE or DECIMAL(n, m), NUMERIC(n, m) 存储 floating-point 个数字。

您需要为 year 使用 INTEGER,为 direct_phone 使用 VARCHAR