JPA查詢返回自定義對象

JPA查詢返回自定義對象

說明:
select後面是new + 實例化對象的全路徑,構造函數就是構建自己想要寫入該實體對象對應的屬性的值,且語法與hql寫法相同,注意不要設置@Query註解nativeQuery屬性的值,使用默認值即可;

import cn.alqingge.dto.FilingHistoryDTO;
import cn.alqingge.entity.FilingFinancialAccountingSystemEntity;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;

import java.util.List;

/**
 * @author [email protected]
 * @date 2020/6/15 11:29
 */
public interface FilingFinancialAccountingSystemRepository extends JpaRepository<FilingFinancialAccountingSystemEntity, String> {

    /**
     * 通過用戶id查詢用戶提交的歷史記錄
     *
     * @param userId
     * @return
     */
    @Query(value = "SELECT new cn.gogpay.dcb.province.taxation.dto.FilingHistoryDTO(s.name, s.startDate, s.endDate) " +
            "FROM FilingFinancialAccountingSystemEntity AS s WHERE s.userId = ?1")
    List<FilingHistoryDTO> findAllByUserId(String userId);
}
package cn.alqingge.dto;

import com.alibaba.fastjson.JSON;

/**
 * @author [email protected]
 * @date 2020/6/15 11:34
 */
public class FilingHistoryDTO {

    /**
     *名稱
     */
    private String name;

    /**
     * 有效期起
     */
    private String startTime;

    /**
     * 有效期止
     */
    private String endTime;

    public FilingHistoryDTO() {
    }

    public FilingHistoryDTO(String name, String startTime, String endTime) {
        this.name = name;
        this.startTime = startTime;
        this.endTime = endTime;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getStartTime() {
        return startTime;
    }

    public void setStartTime(String startTime) {
        this.startTime = startTime;
    }

    public String getEndTime() {
        return endTime;
    }

    public void setEndTime(String endTime) {
        this.endTime = endTime;
    }

    @Override
    public String toString() {
        return JSON.toJSONString(this);
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章