gpt4 book ai didi

spring - 如何使用 Spring Data JPA 根据 bool 参数包含或排除记录?

转载 作者:行者123 更新时间:2023-12-03 23:11:57 26 4
gpt4 key购买 nike

我不太喜欢 Spring Data JPA,我对如何实现简单查询有以下疑问。

我有这个 AccomodationMedia 实体类映射到我的数据库中的 accomodation_media:

@Entity
@Table(name = "accomodation_media")
public class AccomodationMedia {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
private Long id;

@Column(name = "id_accomodation")
private Long idAccomodation;

@Column(name = "is_master")
private boolean isMaster;

@Lob
@Column(name = "media")
private byte[] media;

private String description;

private Date time_stamp;

public AccomodationMedia() {
}

...............................................................
...............................................................
...............................................................
// GETTER AND SETTER METHODS
...............................................................
...............................................................
...............................................................
}

此类的实例表示与住宿(酒店)相关联的照片

正如您在前面的代码片段中看到的那样,我有这个字段:

@Column(name = "id_accomodation")
private Long idAccomodation;

其中包含住宿的 ID(我数据库中酒店的 ID)。

我还有这个 bool 字段,用于指定图像是否是主图像:

@Column(name = "is_master")
private boolean isMaster;

所以,此时,在我的存储库类中,我有这个方法应该返回与特定酒店关联的所有图像:

@Repository
public interface AccomodationMediaDAO extends JpaRepository<AccomodationMedia, Long> {

List<AccomodationMedia> findByIdAccomodation(Long accomodationId);

}

我想修改此方法,同时传递 bool 参数,指定是否还必须返回主图像或仅返回非主图像。

所以我尝试这样做:

List<AccomodationMedia> findByIdAccomodationAndIsMaster(Long accomodationId, boolean isMaster);

但这是不正确的,因为将 isMaster 参数设置为 true 它将仅返回 ma​​ster image(因为它首先选择所有具有特定住宿 ID 的住宿,然后是 isMaster 字段设置为 true 的住宿)。

那么,我该如何正确创建使用 isMaster bool 参数来包含或排除代表我的主图像的 AccomodationMedia 实例的查询?

我知道我也可以使用 native SQL 或 HQL 来执行此操作,但我更喜欢使用“从方法名称创建查询”来执行此操作

最佳答案

我不知道如何测试这个,但基本上你的最终查询应该是:

id_accomodation = ?1 AND (is_master = ?2 OR is_master = false)

所以我会尝试以下方法签名:

findByIdAccomodationAndIsMasterOrIsMasterFalse(Long accomodationId, boolean isMaster);

关于spring - 如何使用 Spring Data JPA 根据 bool 参数包含或排除记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40691750/

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