【发布时间】:2014-12-31 18:16:05
【问题描述】:
这是我正在处理的示例结构
class Item{
Date date;
MetaData metaData;
}
class MetaData{
SysData sysData;
}
class SysData{
Set<Category> categories;
Set<Keyword> keywords;
}
在 UI 上,用户应该能够查看表格中的所有项目。他们应该能够过滤具有特定日期以及任意数量的关键字或类别的项目。
假设我创建了一个类别为“新”“男性”和关键字“快速”“漂亮”的项目。如果我想显示所有具有新类别的项目,我只需在下拉列表中选择新标签并单击查询。如何创建这种类型的查询?
这是我尝试过的
....
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 相关是否重要?
【问题讨论】:
-
如果 Hibernate 的 Criteria API 类似于 TopLink(与 Glassfish 捆绑的 RI),那么使用查询语言 HQL 会更轻松。查看tutorialspoint.com/hibernate/hibernate_query_language.htm 并在网上搜索更多示例。