我无法在文档中找到具体的内容(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;
}
用户表实体:
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
}
现在我想在我的存储库中查询如下:
public interface WorkstationRepo extends CrudRepository<Workstation, Long> {
findByUserAgeLesserThan(int maxAge);
}
表示我想通过我的工作站实体找到所有年龄不足的用户。
没有@Query注释是否可能?或者/它应该是什么样的?
答案 0 :(得分:2)
试试这个
List<Workstation> findByUserAgeLessThan(int maxAge);
或者您也可以编写查询
@Query("Select w from Workstation w where w.user.age < :maxAge")
List<Workstation> findByUserAgeLesserThan(@Param("maxAge") int maxAge);
答案 1 :(得分:1)
你应该有这样的东西:
@Query("SELECT w from Workstation w INNER JOIN w.user u where u.age < :age")
List<Workstation> findByUserAgeLessThan(@Param("age") int age);
基本上,您需要JOIN
使用JPQL
。{/ p>
答案 2 :(得分:1)
这有效:
@Query("SELECT w from Workstation w INNER JOIN w.user u where u.age < ?1")
List<Workstation> findByUserAgeLessThan(int age);