【问题标题】:JPA superset using CriteriaQuery API使用 CriteriaQuery API 的 JPA 超集
【发布时间】:2017-01-31 03:54:50
【问题描述】:

给定以下类:

@Entity
public class Recipe {

    @Id
    @Column
    private long id; 

    @ElementCollection
    @CollectionTable(name = "recipe_ingredient", joinColumns = @JoinColumn(name = "id"))
    private Set<String> ingredients;

    ...
}

如何使用 CriteriaQuery API 在 JPA 中编写以下内容: “给定一个成分列表,返回至少包含所有指定成分的食谱”

【问题讨论】:

  • 确定要 Criteria API 吗?已弃用:docs.jboss.org/hibernate/orm/5.2/userguide/html_single/…
  • 已更正,正在寻找javax.persistence.criteria.CriteriaQuery
  • 您可以使用多个“IN”子句进行查询,每个子句对应您要检查的每种成分。无论是 JPQL 还是 Criteria,都是如此。

标签: java hibernate jpa


【解决方案1】:

临时,它可以是这样的:

criteria.add(Restrictions.in("recipe.ingredients", ingredients));

其中ingredients 是成分字符串的集合。如果ingredients 抛出异常,请添加别名。

警告:条件 API 现在是 deprecated

要不然你可以看看here for an example.

【讨论】:

  • in 没有提供我正在寻找的结果。这将产生一个配方,因为只有一种成分匹配。如果我有所有的成分,我只想要食谱。
  • 同样的一般问题 - 那里似乎没有太多答案。
  • 也许张贴者的意思是 JPA CriteriaQuery API ...因为他在问题中明确提到了 JPA。这肯定不会被弃用(也不是特别好)。
  • 是的,正在寻找 JPA CriteriaQuery API。
猜你喜欢
  • 1970-01-01
  • 2011-03-29
  • 2012-07-24
  • 2011-04-12
  • 1970-01-01
  • 2015-05-15
  • 2012-08-28
  • 1970-01-01
  • 2011-06-12
相关资源
最近更新 更多