首页 > 解决方案 > JPA标准检查输入日期范围是否存在

问题描述

@Entity
@Table(name = "CC_PLANNING_CYCLE")
public class PlanningCycleEntity implements Serializable {

    /**
     * 
     */
    private static final long serialVersionUID = 1L;

    @Id
    private Long forcastCycleId;

    @Column(name = "FORECAST_CYCLE_NAME")
    private String planningCycleName;

    @Temporal(TemporalType.DATE)
    @Column(name = "TIME_WINDOW_START_DATE")
    private Date timeWindowStartDate;

    @Temporal(TemporalType.DATE)
    @Column(name = "TIME_WINDOW_END_DATE")
    private Date timeWindowEndDate;
}

桌子:

|Plan Id   |  Name    |TimewindowStartDate  | timeWindowEnddate|
|1         |  Plan1   | 01-Jan-2021         | 15-Jan-2021      |
|2         |  Plan2   | 18-Jan-2021         | 02-Feb-2021      |
|3         |  Plan3   | 20-Feb-2021         | 25-Feb-2021      |

期望的输出:

Input date 1 : 01-Jan-2021 and 17-Jan-2021   --- present
Input date 2 : 10-Feb-2021 and 27-Feb-2021  ---- present
Input Date 3 : 04-Feb-2021 and 10-Feb-2021  ---  not present.

请帮助我如何为上述场景编写 JPA 标准查询。

标签: jpa

解决方案


您必须使用自定义验证器,您可以在其中根据参数定义最小和最大日期,例如@DateRange(firstDate = "01/01/1900", lastDate="31/12/2025")

@Temporal(TemporalType.DATE)
@Column(name = "TIME_WINDOW_START_DATE")
@DateRange(firstDate = "01/01/1900", lastDate="31/12/2025")
private Date timeWindowStartDate;

推荐阅读