【问题标题】:ORACLE SQL Difference between two dates hibernateORACLE SQL 两个日期之间的差异休眠
【发布时间】:2020-03-13 23:50:44
【问题描述】:

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

org.hibernate.MappingException:没有 JDBC 类型的方言映射:-104

注意:查询直接在 SQL 中的 DBeaver 中运行,而不是在 Spring 中。

我正在使用 Springboot、hibernate、oracle。

我必须通过我的 springboot REST 控制器将计算出的新时间(作为“持续时间”)公开为 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”类来计算它吗?

【问题讨论】:

标签: java sql oracle hibernate date


【解决方案1】:

替换

bse.END_TIME - bse.START_TIME AS DATE_DIFF

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-21
    • 1970-01-01
    • 2011-10-18
    • 2012-09-09
    • 1970-01-01
    • 2021-10-21
    相关资源
    最近更新 更多