Hibernate的标准问题
我有以下POJO`s: - 公司Hibernate的标准问题
节点 (节点ID,公司)
用户 (用户ID,节点)
我想要创建where子句(通过标准),这将返回给我每个给定公司的用户。喜欢的东西...
Criteria criteria = session.createCriteria(User.class)
criteria.add(Restrinctions.eq("node.company", someCompanyObject);
但是这是行不通的,所以是有可能与标准类来做到这一点还是应该使用 HQL/SQL?
在此先感谢!
通过使用个createCriteria导航协会(),您可以在相关实体指定约束条件:
List cats = sess.createCriteria(Cat.class) .add(Restrictions.like("name", "F%")) .createCriteria("kittens") .add(Restrictions.like("name", "F%")) .list();
调换到你的问题:
Criteria criteria = session.createCriteria(User.class)
.createCriteria("node")
.add(Restrinctions.eq("company", someCompanyObject));
您使用id ...
Restrinctions.eq("node.company.id", someCompanyObject.id);
还应与对象本身的工作。 – kgiannakakis 2010-01-29 22:18:53
它呢?这很酷! – dotjoe 2010-01-29 22:20:27
你想要什么是可能的标准API。你的代码有一些错误,但也许他们只是拼写错误。没有查看表和休眠配置,很难分辨错误是什么。尝试是这样的:
Criteria criteria = session.createCriteria(User.class);
List users = criteria.add(Restrictions.eq("node.company", someCompanyObject))
.list();
如果你想在http://github.com/moesio/seimos
节省一些代码使用Seimos举个例子,你可以使用标准如下:
Criteria criteria = session.createCriteria(Cat.class);
criteria.add(Restrictions.like(“description”, “Pap”)
.addOrder(Order.asc(“description”);
Criteria subCriteria = criteria.createCriteria("kind", "kind");
subCriteria.add(Restrictions.eq("description", "persa"));
Criteria anotherSubCriteria = subCriteria.createCriteria("anAssociation","anAssociation");
anotherSubCriteria.add(Restrictions.eq("attribute", "anything"));
criteria.setResultTransformer(new AliasToBeanResultTransformer(Cat.class));
criteria.crateAlias(“kind.anAssociation”, “kind_anAssociation”);
criteria.setProjections(Projections.projectionList()
.add(Projections.alias(Projections.property(“id”), “id”))
.add(Projections.alias(Projections.property(“kind.id”, “kind.id”))
.add(Projections.alias(Projections.property(“kind.anAssocation.attribute”, “kind.anAssociation.attribute”))
List cats = criteria.list();
但如果你想节省一些代码,你可以使用Seimos和代码只是
Filters filters = new Filters();
filters.add(new Filters(“description”, “Pap”)
.add(new Filter(“description”))
.add(new Filter("kind.description", "persa"))
.add(new Filter("kind.anAssociation.attribute", "anything"));
List<Cat> cats = dao.find(filters);
因此,可以考虑使用http://github.com/moesio/seimos
感谢大家的帮助和原谅我的错误,但我手动编写示例代码。我认为这种方式对我来说是更好的解决方案! – NikolayGS 2010-01-29 22:48:44