我有一个像这样的实体:
@Entity
class Blog{
@Id
private Long id;
// ...
@ManyToOne
@JoinColumn(name = "author_id")
private User author;
}
我想对 author
执行“in”查询专栏,所以我写了我的BlogRepository
像:
public interface BlogRepository extends JpaRepository<Blog, Long>, CustomizedBlogRepository {
Page<Blog> findByUserIn(Collection<User> users, Pageable pageable);
}
这是可行的,但是,我需要对一个请求执行两次查询,即查询 User
来自UserRepository
的实体获取Collection<User> users
。
因为在很多情况下,我想要的只是语义,例如:
select * from blog where author_id in (some_id_list);
那么 jpa 中是否有可以让我执行如下查询而不查询 User
实体?
最佳答案
方法的 Order
部分会造成妨碍。由于您不希望结果排序,因此可以使用:
public interface BlogRepository extends JpaRepository<Blog, Long>, CustomizedBlogRepository {
Page<Blog> findByUser_IdIn(Collection<Long> userId, Pageable pageable);
}
关于java - 如何在jpa的@ManyToOne JoinColumn上执行 "in"查询而不查询实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60629950/