有一列太大了,拖慢了整個查詢速度。所以我需要省略一個,只在實際需要時提供。我試過這個解決方案:
@Query("SELECT new Account (a.name) From Account a Where a.id = :id)
上面的代碼將檢索 id 列資料。當我嘗試使用其他 getter 時,顯然其余屬性都是空的。但是當它帶有其他物體關系時,例如:
//The account entity code
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "user_id")
@NotFound(action = NotFoundAction.IGNORE)
private User user;
/**
The user side code is ommitted
**/
@Query("SELECT new Account (a.name,a.user) From Account a)
它將生成這些 sql 查詢:
inner join
user user3_
on account0_.user_id=user3_.id
但是,當我們使用普通的 jpa 方法時
@Query("SELECT a FROM Account a WHERE a.id = :id")
Account getById(UUID id)
我們可以通過 getter 方法輕松獲取用戶物體:
Account acc = accountRepository.getById(id);
User user = acc.getUser();
不是內連接sql查詢;
如何使用 getter 檢索特定關聯物體列?
可以用jpa實作嗎?
uj5u.com熱心網友回復:
這篇文章應該有所幫助:如何使用 JPA 延遲加載物體屬性
在此之前,我強烈建議您了解 JPA 中的延遲加載及其作業原理。這些可以幫助:Hibernate 中的延遲加載是什么?以及Java Persistence API 中 FetchType LAZY 和 EAGER 之間的區別?
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/439372.html
上一篇:如何替換c中的goto部分
