我試過了,但找不到更好的標題,所以看起來很奇怪,但問題實際上很簡單......
我有一個使用外來鍵的 JPA 查詢,默認情況下 JPA 將托管物體作為外來鍵來執行查詢,有什么辦法可以通過長 id 來代替嗎?
例子:
@Entity
@Table(name = "user")
public class User {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER, orphanRemoval = true, mappedBy = "user")
private Set<Item> entries = new HashSet<>();
}
@Entity
@Table(name = "item")
public class Item implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@ManyToOne(targetEntity = User.class, optional = false, fetch = FetchType.LAZY)
private User user;
}
@Repository
public interface ItemRepository extends PagingAndSortingRepository<User, Long> {
// @formatter:off
@Query("SELECT item FROM Item item WHERE (:user is null OR :user = item.user)")
Page<Item> findByUser(@Param("user")User user, Pageable pageable);
//@formatter:on
}
我想要的不是將用戶物體傳遞給存盤庫類,而是僅傳遞其 id,這樣我可以將 id 作為引數并避免對資料庫進行一次查詢,只是為了從其 id 中檢索用戶
我怎樣才能做到這一點
uj5u.com熱心網友回復:
好吧,只需將引數設定為Long然后
@Query("SELECT item FROM Item item WHERE (:userId is null OR :userId = item.user.id)")
Page<Item> findByUser(@Param("userId")Long userId, Pageable pageable);
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/413708.html
標籤:
上一篇:通過Java執行python腳本
下一篇:通過JPA原生查詢更新
