gpt4 book ai didi

java - 使用 AND 条件进行一对多搜索

转载 作者:行者123 更新时间:2023-11-30 04:44:27 24 4
gpt4 key购买 nike

我有以下包含多种颜色的产品。

我希望找到至少包含红色和绿色的产品。

Product class

String id;

List<Color> colors{};

Color class

id

color

kindly ignore the syntax error.

我可以使用以下内容来搜索 OR 条件。

Criteria criteria = createCriteria();
criteria.createAlias("colors","colors");

List<String> colorsList = new LinkedList();
colorsList.add("GREEN");
colorsList.add("RED");
criteria.add(Restriction.in("colors.color",colorsList);

上面的内容将为我提供颜色为红色或绿色的产品,但不会提供至少包含红色和绿色的产品。

示例

Product: RED GREEN - PASS
Product: RED GREEN YELLOW - PASS
Product: RED YELLOW - FAIL

提前致谢。

最佳答案

我们的想法是,我们选择所有具有该颜色的产品并对每个产品进行计数,然后具有两种颜色的产品的颜色数应为 2

DetachedCriteria colorCrit = DetachedCriteria.For(Product.class)
.createAlias("colors","color")
.add(Restriction.eq("color.color", "RED")
.add(Restriction.eq("color.color", "GREEN")
.SetProjection(Projections.Group("id"))
.add(Restriction.eq(Projections.rowCount(), 2));

Criteria criteria = createCriteria()
.add(Subqueries.in("id", colorCrit)
.list();

更新:

有一个 issue对于 hibernate 来说正是为了这个。最后评论描述了如何使用。

关于java - 使用 AND 条件进行一对多搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11409302/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com