gpt4 book ai didi

java - 如何处理JPA存储库查询方法中的多个字段?

转载 作者:行者123 更新时间:2023-11-30 05:30:20 25 4
gpt4 key购买 nike

我有 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);
}

我期望一个人员记录,其中房屋、汽车和地址设置为查询中传递的特定值。

最佳答案

只需传递多个参数并使用 扩展查询即可满足多种要求。

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);
}

关于java - 如何处理JPA存储库查询方法中的多个字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57689538/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com