我遇到了一些行為不明確的代碼,
。我們有第一個物體:
@Data
@Entity
@Table(name = "Info"/span>)
公眾類資訊 {
@OneToOne(name = "Info")
@JoinColumn(name = "data_id" )
私人資料data。
}
和第二個:
@Data
@Entity
@Table(name = "Data"/span>)
public class Data {
@Id(name = "Data")
私有的Long dataId
}
而我們有下一個方法來檢索資料:
@Query(value = "SELECT * FROM Info i inner join Data d on d.data_id=i.data_id"/span>,
nativeQuery = true)
List<Info>getInfo() {}。
由于nativeQuery = true是存在的,我希望這個方法只做一個SQL選擇并檢索我的資料。但是,如果我看一下日志,實際上有兩個選擇:
SELECT * FROM Info i inner join Data d on d。 data_id=i.data_id。
SELECT * FROM Data d whered. data_id = 123;
為什么會發生這種情況?如何解決這個問題,以便只做一個選擇并檢索所有資料?
uj5u.com熱心網友回復:
如果沒有Hibernate特定的API,是不可能指定本地查詢獲取的。我建議你使用一個普通的JPQL/HQL查詢:
List<Info> getInfo()。
這將和你的本地查詢一樣,但同時只需運行一個查詢。
uj5u.com熱心網友回復:
你的Data物體列與查詢不匹配,你在查詢中輸入的是d.data_id,但實際的列名是dataId,nativeQuery = true是用于Relational查詢而不是JPQL查詢
@Query(value = "SELECT * FROM Info i INNER JOIN Data d ON d.dataId = i.data_id" /span>,
nativeQuery = true)
List<Info>getInfo() {}。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/309831.html
標籤:
上一篇:我在flutter中創建了筆記應用程式,但在sqflite中被卡住了,我怎樣才能將我的標題和正文傳遞給插入方法呢?
下一篇:JPA洗掉不執行
