Spring Boot JPA 过滤器按连接表

Gre*_*orz 5 spring hibernate jpql spring-data-jpa

我在文档中找不到具体的东西(https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#jpa.query-methods.query-creation)并且在几个方面没有令人满意的答案博客。所以这里是我的问题。

我有表实体,如:

@Entity
@Table(name = "workstation")
public class Workstation
{
 @ManyToOne(fetch = FetchType.LAZY)
 @JoinColumn(name = "userid", nullable = false)
 public User user;
}
Run Code Online (Sandbox Code Playgroud)

和用户表实体:

public class user
{
 @Id
 @GeneratedValue(strategy = IDENTITY)
 @Column(name = "ID", unique = true, nullable = false)
 public Integer id;

 @Column(name = "age", nullable = false)
 public int age
}
Run Code Online (Sandbox Code Playgroud)

现在我想在我的存储库中有一个这样的查询:

public interface WorkstationRepo extends CrudRepository<Workstation, Long> {
 findByUserAgeLesserThan(int maxAge);
}
Run Code Online (Sandbox Code Playgroud)

意味着我想通过我的工作站实体找到所有未满特定年龄的用户。

没有@Query 注释是否可能?或者/它应该是什么样子?

Abd*_*han 5

尝试这个

List<Workstation> findByUserAgeLessThan(int maxAge);
Run Code Online (Sandbox Code Playgroud)

或者,您也可以编写查询

@Query("Select w from Workstation w where w.user.age < :maxAge")
List<Workstation> findByUserAgeLesserThan(@Param("maxAge") int maxAge);
Run Code Online (Sandbox Code Playgroud)