You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JDL不支持DayOfWeek与LocalTime类型,如何创建BusinessHours类?

解决JDL不支持DayOfWeek和LocalTime类型的方案

JDL本身默认不包含java.time.DayOfWeek和java.time.LocalTime这两种类型,但可以通过**自定义用户类型(User Type)**来扩展支持,以下是具体实现步骤:

1. 在JDL中声明自定义类型

首先在你的JDL文件里添加自定义类型映射,明确关联到Java的对应类:

// 映射Java的DayOfWeek枚举
userType DayOfWeek implements java.time.DayOfWeek
// 映射Java的LocalTime时间类型
userType LocalTime implements java.time.LocalTime

2. 定义BusinessHours实体

接下来就可以像使用JDL原生类型一样,在实体中声明这两个字段:

entity BusinessHours {
  dayOfWeek DayOfWeek required,  // 对应Java的DayOfWeek
  startTime LocalTime required,  // 对应Java的LocalTime
  endTime LocalTime required     // 对应Java的LocalTime
}

3. 代码生成与验证

使用JDL工具生成代码后,你会得到符合预期的BusinessHours类:

public class BusinessHours {
    private DayOfWeek dayOfWeek;
    private LocalTime startTime;
    private LocalTime endTime;
  
    // 自动生成的getter、setter等方法
}

额外说明

  • 确保你的JPA实现(如Hibernate)支持JPA 2.2及以上版本,因为从JPA 2.2开始原生支持java.time包下的时间类型,无需额外配置转换器。
  • 如果使用旧版本JPA,可能需要手动添加@Converter注解来处理这些类型,但主流框架目前都已支持原生处理。

内容的提问来源于stack exchange,提问作者vic

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 12:49:59