Spring Data 按内部关系查找

ema*_*ara 9 spring jpql spring-data spring-data-jpa

我的问题是关于 Spring 数据生成查询的方式。

我有两个实体:消息,发件人

@Entity
public class Message extends BaseEntity {
 @ManyToOne
 protected Account sender;
}
Run Code Online (Sandbox Code Playgroud)

我有一个电话

messageDao.findBySenderId(Long id)
Run Code Online (Sandbox Code Playgroud)

结果是在两个表left outer join之间查询两个表中的所有列,但我的期望只是从消息表中选择where sender_id =传递的值。

那么有没有办法强制只选择第一个消息实体而不是加入另一个消息实体?我想要在 where 子句中使用 findBy 而不是自定义 @Query 的简单条件

Ess*_*Boy 5

您将需要一个像(未经测试)这样的存储库:

@Repository
public interface MessageRepository extends JpaRepository<Message, Long> {
      Message findFirstBySenderId(Long id); 
}
Run Code Online (Sandbox Code Playgroud)

repositories.query-methods