试图创建一个hibernate查询,不确定是否正确理解

时间:2014-12-31 18:16:06

标签: java hibernate

以下是我正在处理的内容的示例结构

class Item{
   Date date;
   MetaData metaData;
}

class MetaData{
   SysData sysData;
}

class SysData{
    Set<Category> categories;
    Set<Keyword> keywords;
}

在用户界面上,用户应该能够查看表格中的所有项目。他们应该能够过滤具有特定日期的项目以及任意数量的关键字或类别。

假设我说我创建了一个类别&#34; New&#34; &#34;男性&#34;和关键字&#34;快速&#34; &#34;漂亮&#34 ;.如果我想显示所有具有新类别的项目,我只需在下拉列表中选择新标记,然后单击查询。如何创建此类查询?

这是我试过的

...

Criteria criteria = sess.createCriteria(Item.class, "item");
criteria.createAlias("metaData", "meta");
criteria.createAlias("meta.sysData", "sys");
criteria.add(Restrictions.in("sys.categories", myCategories);

我尝试了一些细微的变化,但我至少朝着正确的方向前进了吗?希望这是足够的信息。 SysData与Item有关是否重要?

1 个答案:

答案 0 :(得分:0)

试试这样:

Criteria criteria = sess.createCriteria(Item.class, "item");
criteria.createAlias("metaData", "meta");
criteria.createAlias("meta.sysData", "sys");
criteria.createAlias("sys.categories", "ctg");
criteria.add(Restrictions.in("ctg", myCategories);