我关注POJO: - 公司
节点 (nodeID,公司)
用户 (userID,node)
我想创建where子句(通过Criteria),它将返回给我给定公司的每个用户。有点像...
Criteria criteria = session.createCriteria(User.class)
criteria.add(Restrinctions.eq("node.company", someCompanyObject);
但这不起作用,因此可以使用条件类或应该使用它 HQL / SQL?
提前致谢!
答案 0 :(得分:5)
通过使用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) );
答案 1 :(得分:2)
您使用id ...
Restrinctions.eq("node.company.id", someCompanyObject.id);
答案 2 :(得分:2)
Criteria API可以实现您的目标。您的代码有一些错误,但也许它们只是错别字。如果不查看表和hibernate配置,很难分辨出错误是什么。尝试这样的事情:
Criteria criteria = session.createCriteria(User.class);
List users = criteria.add(Restrictions.eq("node.company", someCompanyObject))
.list();
答案 3 :(得分:0)
如果你想保存一些代码,可以在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