將命名查詢定義為物體 SELECT mdl FROM tbl_slots mdl where mdl.test_date between :dt and :dt order by mdl.test_time asc
如果使用*而不是mdl在查詢中,JPA 會給出錯誤unexpected token: *
如果在 select 陳述句中提到列名,它會回傳物體,其各自的欄位填充了預期值
[{ "srNo": 1, "testDate": "2021-Dec-30", "testTime": "09:00-10:00", },{ "srNo": 2, "testDate": "2021- Dec-30", "testTime": "11:00-12:00", }]
如何在不提及 select 陳述句中的列名的情況下獲得相同的結果,就像使用一樣*?
什么是有效的 JPQL 或 HQLselect * from table查詢?
物體類
@Table(name = "tbl_slots")
@NamedQueries({
@NamedQuery(name="slots",query = "SELECT mdl FROM tbl_slots mdl where mdl.test_date between :dt and :dt order by mdl.test_time asc")
})
public class TblSlots implements Serializable {
private Long srNo;
private Date testDt;
private String testTime;
public TblSlots() {}
public TblSlots(Long srNo, Date testDt, String testTime) {
this.srNo = srNo;
this.testDt = testDt;
this.testTime = testTime;
}
@Id
@Column(name = "sr_no", unique = true, nullable = false, precision = 16, scale = 0)
public Long getSrNo() {
return this.srNo;
}
public void setSrNo(Long srNo) {
this.srNo = srNo;
}
@Temporal(TemporalType.DATE)
@Column(name = "test_date", nullable = false, length = 13)
public Date getTestDt() {
return this.testDt;
}
public void setTestDt(Date testDt) {
this.testDt = testDt;
}
@Column(name = "test_time", nullable = false, length = 20)
public String getTestTime() {
return this.testTime;
}
public void setTestTime(String testTime) {
this.testTime = testTime;
}
uj5u.com熱心網友回復:
您不能使用“*”,因為 Hibernate 正在轉動物件。如果要使用*,請@NamedNativeQuery不要使用@NamedQuery
@NamedQueries({
@NamedQuery(name="slots",query = "SELECT mdl FROM Member mdl ")
})
// Use this
@NamedNativeQueries({
@NamedNativeQuery(name="slots_native",query = "SELECT * FROM Member mdl ",resultClass = MemberEntity.class)
})
參考@NamedNativeQuery
uj5u.com熱心網友回復:
JPQL 理解 java 物體而不是列。
如何在select陳述句中不提及列名就獲得相同的結果,就像使用*一樣?
select * from table 查詢的有效 JPQL 或 HQL 是什么?
所以一個有效的 JQPL SELECT 查詢甚至可以沒有SELECT子句。
以下將是一個有效的 JPQL 查詢,用于回傳該表中的完整物體
FROM tbl_slots mdl where mdl.test_date between :dt and :dt order by mdl.test_time asc
所以你的注釋可以寫成
@NamedQueries({
@NamedQuery(name="slots",query = "FROM tbl_slots mdl where mdl.test_date between :dt and :dt order by mdl.test_time asc")
})
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/399179.html
