如何查找具有任何参数值的实体

时间:2014-07-25 12:48:10

标签: spring-data-jpa

我将Spring JPAhibernate一起使用并拥有一个拥有大量属性的实体,让我们说它有五个;如下图所示:

@Entity
@Table
public class MyEntity{
 Object properties1;
 Object properties2;
 Object properties3;
 Object properties4;
 Object properties5;
}

Spring提供了一个非常好的功能;它根据存储库中的方法名称生成JPQL查询。例如:

List<MyEntity> findByProperties3(Object properties3);

在我的情况下,用户有一个html表单来搜索MyEntity。这个html表单分别有五个字段,分别对应MyEntity类的五个属性。用户还可以将任何字段留空,以便搜索将在查询中包含此属性的所有值。

我知道如何实现它,但它会脱离Spring的便捷方法,需要大量的编码。我的想法是在存储库接口上创建一个方法,用于所有可能性:用户将所有字段留空,填充一个字段,两个字段等;最多五个领域。不幸的是,这意味着会有:

enter image description here

的可能性。我怎样才能避开这条道路?理想情况下,我只创建一种方法:

List<MyEntity> findByProperties1andProperties2andProperties3andProperties4andProperties5(Object p1,Object p2,Object p3,Object p4,Object p5)

但是,如果某些pX为空,那么Spring JPA会明确地找到MyEntitypropertiesX等于null,而不是所有可能的值,例如, 12345null

=========== EDIT ===============

我仍然希望得到某人关于Spring JPA解决方案的回答,但我在解决方案的同时使用了javax.persistence.criteria.CriteriaBuilder

0 个答案:

没有答案