我想在具有条件的搜索中排除多个条目

时间:2019-02-17 10:40:25

标签: spring jpa criteria predicate

我有一个带有食谱的应用程序。 食谱本身具有营养成分。我设置了一个过滤器,仅恢复至少有一种食物的配方。但是我一直坚持筛选这些食谱,使之只包含这些食物。

我在JPA中使用spring-boot。我的数据库是mySQL。我已经尝试通过编写以下命令来取消我的请求:     joinIngredients.get(“ aliment”)。in(aliments).not()

我尝试加入INNER。没有成功:(

public function index (?Tag $tag, ?Category $category)
{
    if($tag->exists){
       ....
    }
    if($category->exists){
       ....
    }
}

食谱

Recipe(recette)
|__Ingredient
   |_Aliment

成分

@Entity
public class Recette implements Serializable {

    //id, etc.

    @OneToMany(cascade = CascadeType.DETACH, mappedBy = "recette", orphanRemoval = true)
    private Collection<Ingredient> ingredients;
}

消除

@Entity
public class Ingredient implements Serializable {

    @ManyToOne
    @JsonIgnore
    @JoinColumn(name="idRecette") 
    private Recette recette;

    @OneToOne(cascade = CascadeType.MERGE)
    @JoinColumn(name = "idAliment")
    private Aliment aliment;
}

Recette.repo方法:if和else给出相同的想法!

@Entity
public class Aliment implements Serializable {

    @Id
    @GeneratedValue(strategy= GenerationType.IDENTITY)
    private long idAliment;

    @Column(columnDefinition = "VARCHAR(40)", unique=true)
    private String nom;
}

我有四个食谱,

  • 带面粉的1。
  • 两个面粉和鸡蛋。
  • 带鸡蛋和牛奶的3个
  • 4个面粉,鸡蛋和牛奶。

如果我只是选择面粉,我有食谱1、2和4。好的。

如果我还选择“ exclusiveAlimentsWanted”,我只想要配方1,但是我仍然有配方1、2和4。KO。

在构建数据库查询时,我直接使用谓词进行过滤。 (很抱歉,如果我使用的字词不正确,我会帮助Google翻译,嗨)

我的申请目前不多,仅适用于我的家人,但如果可行,我有很多食谱可以达到1000。

谢谢

0 个答案:

没有答案