【问题标题】:Spring Data JPA (MySQL) saves String in exponential form rather than as a numberSpring Data JPA (MySQL) 以指数形式而不是数字形式保存字符串
【发布时间】:2016-04-30 13:35:42
【问题描述】:

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

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

同时保存supplier.directPhone="99250397679"

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

以这种形式保存direct_phone: 9.925039767E9

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

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

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

【问题讨论】:

    标签: java mysql database hibernate spring-data-jpa


    【解决方案1】:

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

    删除点:

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

    删除“E”:

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

    【讨论】:

    • 你在说什么。
    • 你对 Spring Data JPA 了解吗
    • @abhaygarg12493 是的。
    【解决方案2】:

    这与 Spring Data 没有任何关系。您也曾使用纯 JDBC 遇到过这个问题。

    MySQL 定义了各种numeric types,您可能正在使用存储浮点数的FLOAT, DOUBLE or DECIMAL(n, m), NUMERIC(n, m)

    year 需要使用 INTEGERdirect_phone 需要使用 VARCHAR

    【讨论】:

    • 虽然 desc 供应商我得到了这个 direct_phone | varchar(255) 。所以这已经在 varchar
    • 那么您需要查看 Web 控制器是否不尝试将 double 转换为 String。检查网络层转换器。
    • 然后,你需要一步步调试它,看看哪里坏了。
    猜你喜欢
    • 1970-01-01
    • 2023-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-19
    • 2017-11-03
    相关资源
    最近更新 更多