[英]How to filter an entity by multiple fields using a Spring JPA Repository?
[英]How to handle multiple fields in JPA Repository query methods?
我有 Person - 一个 JPA 实体,它有几个@OneToOne
映射到其他一些实体,如地址、房屋和汽车。 我想在一个查询中找到拥有特定房屋和特定汽车的人。
例如,如果我们想通过 id 查找 Person,我们可以使用findById
方法。 如果我们想使用名称查找,我可以在我的存储库中定义一个findByName
方法。
我的问题是:如果我想选择一个设置了 2 个以上字段的人,方法签名是什么?
我尝试通过仅使用一个属性的findByHouse()
方法选择使用 House。 我想选择使用多个属性。
人物类:
@Entity(name="Person")
@Table(name="person")
@Data
class Person{
@Column(name="HouseID")
Integer houseID;
@Column(name="CarID")
Integer carID;
@Column(name="AddressID")
Integer addressID;
@OneToOne ( fetch= FetchType.EAGER, cascade = CascadeType.ALL )
@JoinColumn ( name = "houseID" )
private House house;
@OneToOne ( fetch= FetchType.EAGER, cascade = CascadeType.ALL )
@JoinColumn ( name = "carID" )
private Car car;
@OneToOne ( fetch= FetchType.EAGER, cascade = CascadeType.ALL )
@JoinColumn ( name = "addressID" )
private Address address;
}
现在存储库:
public interface PersonRepository extends JpaRepository<Person,Long>{
@Query("select p from Person p where p.house.id=:id")
Person findByHouse(@Param("id")Integer houseID);
}
我希望有一个 Person 记录,其中房子、汽车和地址被设置为在查询中传递的特定值。
只需传递多个参数and
根据多个需求扩展您的查询。
public interface PersonRepository extends JpaRepository<Person,Long>{
@Query("select p from Person p where p.house.id=:houseId and p.carID =:carId")
Person findByHouseAndCar(@Param("houseId")Integer houseID, @Param("carId")Integer carID);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.