使用可选属性的 Spring Boot 存储库

问题描述 投票:0回答:2

我试图找出“是否有任何具有给定属性的实体”。

给出以下示例实体:

@Entity
public class Foo {
    @Id
    private Long someId;
    @Column
    private String propA;
    @Column
    private String propB;
    @Column
    private String propC;
}

我试图找到一个具有给定 propA 的实体。或者propB。或C。或它们的组合。我知道,我可以用 JpaRepository 做到这一点,但我会得到大量的函数要写:

public interface FooRepository extends CrudRepository<Foo, Long> {

    boolean existsByPropA(String propA);
    boolean existsByPropB(String propB);
    boolean existsByPropC(String propC);
    boolean existsByPropAAndAndPropB(String propA, String propB);
    boolean existsByPropAAndPropC(String propA, String propC);
    // and much more to be written to get all combinations
}

写出所有可能的组合是无稽之谈,特别是如果要添加新的属性。

我正在寻找这个问题的通用解决方案,或者至少要搜索一个关键字,因为我对 JPA/Hibernate 还不是很坚定。

谢谢。

java spring jpa repository boot
2个回答
0
投票

您应该使用 Criteria Queries,您可以使用标准为查询的生成创建逻辑。


0
投票

作为一种简单的方法,您可以使用这样的查询:

    @Query("SELECT t FROM Task  as t WHERE EXISTS (SELECT t.title FROM t WHERE t.title=:a or t.title=:b or t.title=:c or(t.title=:a and t.title=:b))")
    Boolean check(String a,String b,String c);

但我认为最好的方法是使用规范

© www.soinside.com 2019 - 2024. All rights reserved.