繁体   English   中英

如何处理 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM