java - 如何在jpa的@ManyToOne JoinColumn上执行 "in"查询而不查询实体

标签 java sql spring hibernate hibernate-mapping

我有一个像这样的实体:

@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/

相关文章:

java - 在 128c 条码符号体系中对字符串进行编码

java - @PicketLink 注释类未在 identity.login() 中使用

mysql - SQL仅选择列上具有最大值的行

mysql - mysql 查询的基数违规

spring - MongoRepository 对比两列+Spring Data

java - Spring 集成: How to read the unconsumed messages in the queue?

java - 结合类(class)的好习惯是什么

java - Spring RedisTemplate : after 8 calls method keys hangs up

sql - 如何使用 join 和 where 子句从表中删除?

Spring 侦探行李传播未传播/工作