我试图找出“是否有任何具有给定属性的实体”。
给出以下示例实体:
@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 还不是很坚定。
谢谢。
您应该使用 Criteria Queries,您可以使用标准为查询的生成创建逻辑。
作为一种简单的方法,您可以使用这样的查询:
@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);
但我认为最好的方法是使用规范