Hibernate:获取与m-to-n-table中的数组具有相同值的对象的计数

时间:2016-01-08 10:55:33

标签: java sql hibernate

我有3个表:配方,成分和配方成分具有以下关系:

配方-1:正RecipeIngredient-N:1-成分

RecipeIngredient看起来像:

id | recipe_id | ingredient_id | value
1  | 1         | 1             | 200
2  | 1         | 2             | 0.2
3  | 2         | 1             | 140
4  | 2         | 4             | 20

成分看起来像:

id | name   |
1  | Apple  |
2  | Banana |
3  | Orange |
4  | Lemon  |

recipe_id和ingredient_id是FK。

现在我想检查,如果数据库已经有一个具有相同成分名称和值的配方(以避免重复配方)。

我的函数获取名称和值的字符串列表和浮点数。

我目前的做法并没有注意检查价值,但它已经不起作用。

// _IngredientNames == List of Strings with the names
// _IngredientValues == List of floats with the values
Criteria RecipeCriteria = DBSession.createCriteria(DBRecipeIngredient.class, "RecipeIngredient");
RecipeCriteria.createAlias("RecipeIngredient.ingredient", "i");
RecipeCriteria.add(Restrictions.in("i.name", _IngredientNames));

int NumberOfRecipes = RecipeCriteria
          .setProjection(Projections.projectionList()
              .add(Projections.groupProperty("RecipeIngredient.recipe")))
          .list().size();

实施例: 如果我说,我有Apple 200和Banana 0.2,NumberOfRecipes应该是1.如果我有Apple 200和Banana 0.3,NumberOfRecipes应该是0.或者如果我有Apple 10和Lemon 3,NumberOfRecipes也应该是0.

我希望有人可以提供帮助。

谢谢!

0 个答案:

没有答案