How to join Multiple tables using hibernate criteria where entity relationship is not direct?

拜拜、爱过 提交于 2019-12-03 08:20:55
jpprade

you can do like this :

Criteria accountCriteria = getCurrentSession().createCriteria(Account.class,"acc");
Criteria bookCriteria =  accountCriteria .createCriteria("book","b");
Criteria orgCriteria =  bookCriteria.createCriteria("organization","org");
orgCriteria.add(Restrictions.eq("name", "XYZ"));

ProjectionList properties = Projections.projectionList();
properties.add(Projections.property("name"));
properties.add(Projections.property("id"));

accountCriteria.setProjection(properties);
accountCriteria.list();

Another way

public List<Account> getAccountListByOrgName(String name){
    return sessionFactory.getCurrentSession().createCriteria(Account.class)
                .createAlias("book", "book")
                .createAlias("book.organization", "organization")
                .add(Restrictions.eq("organization.name", name))
                .list();
}
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!