当前位置: 首页 > 知识库问答 >
问题:

JPA实体中格式hh:mm:ss属性的映射持续时间

夏侯嘉荣
2023-03-14

我有一个excel文件,用于记录驾驶员分数,其中包括指定的驾驶持续时间,如hh:mm:ss格式的54:30:15。h代表小时,m代表分钟,秒。我有以下JPA实体

public class DriverScorecard {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "driver_id", referencedColumnName = "id")
    private Driver driver;
    @Column(name = "month", nullable = false)
    private Integer month;
    @Column(name = "year", nullable = false)
    private Integer year;
    private Double distance;
    private Double maxSpeed;
    private Integer harshBreakingPenalty;
    private Integer harshBreakingOccurency;
    private Double harshBreakingScore;
    private Integer harshAccelerationPenalty;
    private Integer harshAccelerationOccurency;
    private Double harshAccelerationScore;
    private Integer overSpeedingPenalty;
    private Duration overSpeedingDuration;
    private Double overSpeedingScore;
    private Integer HOSPenalty;
    private Duration HOSDuration;
    private Double HOSScore;
    private Double totalScore;
    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "status_id", referencedColumnName = "id")
    private ScorecardStatus status;
    @CreationTimestamp
    @Builder.Default
    private ZonedDateTime createdAt = ZonedDateTime.now();
}

我从excel中得到了价值

String durationString = "54:30:15";

并使用java。时间持续时间api。我使用了

Duration duration = Duration.parse(durationString);

但是java出现了一个错误。时间总体安排DateTimeParseException:无法在java中将文本解析为持续时间。基本/java。时间期间解析(Duration.java:419)。欢迎就可能的解决方案提出任何建议

共有1个答案

须捷
2023-03-14

根据文档,parse方法接受ISO-8601中的字符序列。因此,如果要为parse方法提供参数,应该这样编写:PT54H30M15S
我建议编写一个额外的方法,在ISO-8601中解析它,除非您无法更改excel文件中的传入数据。

String[] durationArray = durationString.split(":");
String durationFormatted = String.format("PT%sH%sM%sS", (Object[]) duration);
Duration duration = Duration.parse(durationFormatted);

 类似资料:
  • 快速总结我想要实现的目标。请给出实施或设计建议:) 我有两个表:用户,图像。在UserDO中,我希望保留一组所有用户的图像,以及单个图像,即用户的肖像(在我的示例中,该组将包括肖像): 在ImageDO中,我有一个userid作为外键来记录哪个用户上传了图像。但是它没有布尔值,因为认为一个用户可能会上传许多图像,但只有一个是肖像。 有什么方法可以实现这一点吗?或者我需要维护另一个表(例如,Port

  • 我目前正在尝试使用ModelMapper的映射方法执行实体到DTO的映射。在最深的属性映射上,映射结果为null,但它应该是一个对象。 以下是我的映射源实体(省略brevety的Loombok getter和setter): 以下是我的目标DTO(省略brevety的Loombok Getter和Setter): 在我的Controller类方法上,我这样做映射: My clientService

  • 我在JPA实体映射方面有问题。我有一些课: A级 类别b Classc *如何解决这个问题?*我还能使用类继承吗?还是另一个解决这个的方法? 谢了。

  • 我希望在我正在从事的一个项目中使用CQR,但是我目前正在努力寻找实现CQR查询端的最佳方法。基于我有限的理解,有一个瘦数据层(有时称为瘦读取层),用于查询数据库并返回DTO,其中包含应用程序UI层使用的查询结果。 由于这是一个Java的EE应用程序,我正在开发薄数据层,使用JPA使用EntityManager.createNamedQuery查询数据库,返回一个包含结果的实体,然后将其映射到DTO

  • 我对此代码的唯一关注是,它需要一个新表来连接和,我希望避免这种行为(但如果确实不可能的话,就继续执行它)。 使用也是不可行的,因为它需要表中的其他列,而且这个表稍后将被许多其他实体使用。 因此,使用数据示例,如果在我的表中有一个have: 在Java中,我的列表应该有两个条目(可用的两种语言)。 这种行为在JPA中可能吗? 解决方案 现在一切都按预期工作。

  • 早上好 我正在使用ModelMapper将DTO映射到实体,反之亦然,与此相关,我有一个问题。 1)当我从SonController获取SonDTO时,我需要将长的motherId映射到实体Son,但在那里我有实体mothermother来建立关系,它在内部有id。那么我如何将这个SonDTO motherId映射到实体mothermother中,反之亦然? 类以下: