我有一个带有食谱的应用程序。 食谱本身具有营养成分。我设置了一个过滤器,仅恢复至少有一种食物的配方。但是我一直坚持筛选这些食谱,使之只包含这些食物。
我在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、2和4。好的。
如果我还选择“ exclusiveAlimentsWanted”,我只想要配方1,但是我仍然有配方1、2和4。KO。
在构建数据库查询时,我直接使用谓词进行过滤。 (很抱歉,如果我使用的字词不正确,我会帮助Google翻译,嗨)
我的申请目前不多,仅适用于我的家人,但如果可行,我有很多食谱可以达到1000。
谢谢