我正在撰寫 Spring Boot Data JPA 應用程式,我有以下情況:
我有 2 個資料庫查詢從同一個表中獲取,但它們根據它們的WHERE子句獲取不同的列和資料。例如:
SELECT CAR_TYPE, CAR_MODEL, CAR_YEAR, ACCIDENT_YEAR, BUY_DAY FROM CAR WHERE ACCIDENT_YEAR IS NULL
, 和
SELECT CAR_MODEL, CAR_YEAR FROM CAR WHERE CAR_YEAR >= CURRENT_YEAR
正如您所看到的,這 2 個查詢(其結果將通過 2 個不同的 API 點公開)參考同一個表CAR,但回傳不同的欄位并具有不同的WHERE子句。
我知道在 JPA 中,我必須創建一個物體,CarEntity如:
@Entity
@Table(name = "CAR")
public class CarEntity {
// I can only have fields from one or the other query
// here, so I guess I have to have 2 of these
}
,但我的問題是該物體需要申請 2 個不同的查詢(回傳不同的欄位、不同的資料、不同的WHERE子句)。
所以,看起來我實際上必須有 2 個CarEntity課程。但是,我不確定如何制作這兩個,CarEntities所以它們都參考同一個表CAR?
uj5u.com熱心網友回復:
您可以通過使用投影來完成,基本上您定義了一個帶有您想要獲取它們的欄位方法的介面。預測
@Entity
public class Car implement CarSummary { // if you want you can implement JIC
private UUID id;
private String carType;
private String carModel;
private LocalDateTime carYear;
//getters and setters
}
public interface CarSummary {
String getCardModel();
String getCarYear();
}
然后在您的查詢中。
public interface CarRepository extends Repository<Car, UUID> {
Collection<CarSummary> findByCarYearGreaterThan(LocalDateTime now);
Collection<Car> findByAccidentYearIsNull();
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/318589.html
上一篇:嘗試上傳檔案轉換型別不匹配時出錯
