gpt4 book ai didi

java - ORACLE SQL 两个日期之间的差异 hibernate

转载 作者:行者123 更新时间:2023-12-01 20:25:41 26 4
gpt4 key购买 nike

我需要将两个日期之间的差异计算为 SQL 方言并放入我的 hibernate 存储库中,我尝试了很多解决方案,但现在它不起作用,我不断收到此错误:

org.hibernate.MappingException: No Dialect mapping for JDBC type: -104

注意:查询直接作用于 SQL 中的 DBeaver,但不能作用于 Spring。

我正在使用 Springboot、hibernate、oracle。

我必须通过 springboot REST Controller 将计算出的新时间(作为“持续时间”)公开为 json,如下格式:时:分:秒我的想法是,我在前端有一个数据表,将一些信息显示到表格中,我想显示计算出的时间。

这是我的存储库:

public interface BatchInfosJoinRepository extends JpaRepository<BatchInfosJoin, Long> {
@Query(value = "SELECT ji.JOB_NAME, bse.STEP_NAME, bse.STATUS,bse.START_TIME, bse.END_TIME, bse.END_TIME - bse.START_TIME AS DATE_DIFF " +
" FROM BATCH_JOB_EXECUTION bje INNER JOIN BATCH_STEP_EXECUTION bse ON bje.JOB_EXECUTION_ID = bse.JOB_EXECUTION_ID " +
" INNER JOIN BATCH_JOB_INSTANCE ji ON ji.JOB_INSTANCE_ID = bje.JOB_INSTANCE_ID", nativeQuery = true)
Set<Object[]> fetchStepJoin();
}

我的模型实体“BatchInfoJoin”:

@Entity
public class BatchInfosJoin {

@Id
@Column(name = "step_execution_id")
private Long stepExecutionId;

@Column(name = "job_name")
private String jobName;
@Column(name = "step_name")
private String stepName;
@Column(name = "status")
private String status;
@Column(name = "start_time")
private Date startTime;
@Column(name = "end_time")
private Date endTime;
@Column(name = "date_diff")
private Date dateDiff;
}

或者也许我应该使用 Java 中特殊的“Util”类来计算它?

最佳答案

替换

bse.END_TIME - bse.START_TIME AS DATE_DIFF

(bse.END_TIME - bse.START_TIME)*60*60*24 AS DATE_DIFF

关于java - ORACLE SQL 两个日期之间的差异 hibernate ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58917458/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com