我有主表和明細表
1-主-Employee(ID INT PRIMARY KEY,名字VARCHAR2,ADDRESS_ID INT外鍵)
2-詳情 - 地址(ID INT主鍵,塊VARCHAR2,建築VARCHAR2,面積VARCHAR2)
JPA如何讓某些字段不是所有的字段
我使用JPA獲取對象,我想某些領域不是全部,我想 (Employee.id,Employee.name,Address.area) 只有
所以我怎麼能沒有得到所有的領域呢?
謝謝。
我有主表和明細表
1-主-Employee(ID INT PRIMARY KEY,名字VARCHAR2,ADDRESS_ID INT外鍵)
2-詳情 - 地址(ID INT主鍵,塊VARCHAR2,建築VARCHAR2,面積VARCHAR2)
JPA如何讓某些字段不是所有的字段
我使用JPA獲取對象,我想某些領域不是全部,我想 (Employee.id,Employee.name,Address.area) 只有
所以我怎麼能沒有得到所有的領域呢?
謝謝。
你確實,通過使用查詢:
select e.id, e.name, a.area from Employee e left join e.address a where ...
這樣的查詢將返回一個List<Object[]>
,其中每個對象數組包含三個選定的元素。
但是,通過只選擇那些字段,您可能不會獲得任何收益,因爲執行數據庫查詢時通常會花費的是查找數據以檢索和執行表之間的聯接。你最好繼續使用您的實體,並使用下面的查詢,而不是,它會返回員工的情況下,與已加載它們的地址:
select e from Employee e left join fetch e.address where ...
這將返回一個List<Employee>
。
我知道這有點晚了,但仍然想回答以防萬一有人可能會遇到這個問題:你有沒有考慮嘗試像懶惰和渴望的提取類型?有了這些,你可能會得到直接標記爲「渴望」的所有字段,「懶」字段被提取
如果這兩個表之間沒有任何關係,那麼如果使用'createQuery'或'namedQuery',我認爲你需要得到兩個物體。或者你也可以使用'nativeQuery' – Yubaraj
有一個關係,但是當我得到對象時,我得到所有的字段:( – Hazim
是的,如果你返回對象,那麼你會得到所有的字段。所以最好的方法是使用'nativeQuery' – Yubaraj