首页 > 解决方案 > 有没有办法使用 JPA / Hibernate 和 mySQL 来获取计算列的值?

问题描述

我正在开发一个项目,因为我正在学习使用 JPA 的 Spring Boot,使用 Mustache 进行休眠作为模板。我设法用一个计算列创建了一个视图,该列从 issueDate 和 expiryDate 计算剩余天数。该视图工作正常,我能够显示除计算列之外的所有列。我需要帮助弄清楚如何做到这一点

我的实体类

    package com.demgo.demgoerp.model;

import org.hibernate.annotations.Formula;
import org.hibernate.annotations.GenericGenerator;

import javax.persistence.*;

@Entity
public class DocumentStorage
{
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO, generator = "native")
    @GenericGenerator(name = "native", strategy = "native")
//    @Column(name = "id", updatable = false, nullable = false)
    private Long documentID;
    private String documentTitle;
    private String documentLocation;
    private String uploadDate;
    private String issueDate;
    private String expiryDate;



   /* @Formula(value = "select CONCAT(documentLocation,documentTitle) from document_storage")
    private String  myColumn;*/

    public DocumentStorage()
    {
        super();
    }

    public DocumentStorage(String documentTitle, String documentLocation, String uploadDate, String issueDate, String expiryDate)
    {
        super();
        this.documentTitle = documentTitle;
        this.documentLocation = documentLocation;
        this.uploadDate = uploadDate;
        this.issueDate = issueDate;
        this.expiryDate = expiryDate;
    }


    public Long getDocumentID()
    {
        return documentID;
    }

    public void setDocumentID(Long documentID)
    {
        this.documentID = documentID;
    }

    public String getDocumentTitle()
    {
        return documentTitle;
    }

    public void setDocumentTitle(String documentTitle)
    {
        this.documentTitle = documentTitle;
    }

    public String getDocumentLocation()
    {
        return documentLocation;
    }

    public void setDocumentLocation(String documentLocation)
    {
        this.documentLocation = documentLocation;
    }

    public String getUploadDate()
    {
        return uploadDate;
    }

    public void setUploadDate(String uploadDate)
    {
        this.uploadDate = uploadDate;
    }

    public String getIssueDate()
    {
        return issueDate;
    }

    public void setIssueDate(String issueDate)
    {
        this.issueDate = issueDate;
    }

    public String getExpiryDate()
    {
        return expiryDate;
    }

    public void setExpiryDate(String expiryDate)
    {
        this.expiryDate = expiryDate;
    }
}

我的回购

package com.demgo.demgoerp.dao;

import com.demgo.demgoerp.model.DocumentStorage;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.stereotype.Repository;

import java.util.List;

@Repository
public interface DocumentRepo extends JpaRepository<DocumentStorage, Long>
{

    @Query(value = "select * from ShowAllDocuments", nativeQuery = true)
    List<DocumentStorage> findAllDocuments();

    @Query(nativeQuery = true, value = "select * from document_storage")
    public List<DocumentStorage> getAllDocs();


}

我的数据库视图

create view  ShowAllDocuments
as

SELECT 
documentid,
document_location,
document_title,
upload_date,
issue_date,
expiry_date,
datediff(expiry_date,issue_date) as days_remaining
FROM document_storage;

现在我只想能够在我的小胡子视图上列出该 days_remaining 列和其余列。

标签: javamysqlhibernatespring-bootspring-data-jpa

解决方案


推荐阅读