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
。
我使用 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
。