我嘗試使用 NativeQuery 創建查詢,但是當我嘗試添加到 DTO 時。它不識別 DTO。
public List<AbsenceResponse> findAllByUserId1(Long id) {
List<AbsenceResponse> res = null;
StringBuilder sql = new StringBuilder();
sql.append(
"SELECT a.absence_id, a.create_date, a.end_date,a.date_off,a.title,a.description,a.status,a.type,a.enable_date, u.full_name as fullNameOfDepartment");
sql.append(" FROM absence a ");
sql.append(" INNER JOIN user u ON u.user_id = a.absence_by ");
sql.append(" WHERE a.user_id = " id);
res = entityManager.unwrap(org.hibernate.Session.class).createNativeQuery(sql.toString())
.addScalar("absenceId", LongType.INSTANCE)
.addScalar("createDate", DateType.INSTANCE)
.addScalar("end_date", DateType.INSTANCE)
.addScalar("dateOff", IntegerType.INSTANCE)
.addScalar("title", StringType.INSTANCE)
.addScalar("description", StringType.INSTANCE)
.addScalar("status", IntegerType.INSTANCE)
.addScalar("type", IntegerType.INSTANCE)
.addScalar("enable_date", DateType.INSTANCE)
.addScalar("fullNameOfDepartment", StringType.INSTANCE)
.setResultTransformer(Transformers.aliasToBean(AbsenceResponse.class))
.list();
return res;
}
這是我的缺席回應(DTO)
public class AbsenceResponse {
private Long absenceId;
private Date startDate;
private Date endDate;
private String title;
private String description;
private int status;
private int type;
private Date enableDate;
private String fullNameOfDepartment
}
輪到這個錯誤了
java.sql.SQLException: Column 'absenceId' not found.
這是我第一次使用 NativeQuery。如果我有什么不好或缺少的東西,請在下面發表評論。你的評論對我幫助很大。玩的很開心
uj5u.com熱心網友回復:
選擇查詢回傳的列被命名absence_id(而不是absenceId)。對于所有其他不匹配的列,您將遇到類似的錯誤 -createDate例如(應該是create_date)。
這是一個原生查詢,因此您需要使用原生 SQL 查詢回傳的命名(而不是類中屬性的名稱)。
您還可以將查詢更改為:
SELECT a.absence_id as absenceId, a.create_date as createDate, a.end_date as endDate, a.date_off as dateOff, ...
這樣查詢的結果將匹配 bean 中的屬性,并且應該解決結果轉換器的問題。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/493985.html
上一篇:檢查串列中的任何值是否滿足條件
下一篇:如何使JPA物體欄位真正只寫
