Search code examples
hibernatecriteriahibernate-criteria

Criteria on "this" object?


I'm trying to build following criteria:

public List<Domain> getDomains()
{
    Session session = sessionFactory.getCurrentSession();
    Criteria criteria = session.createCriteria( Domain.class );
    User user = userManager.getLoggedInUser();
    if ( user.getDomain().getVisibleDomains() != null && user.getDomain().getVisibleDomains().size() > 0 )
    {
        criteria.add( Restrictions.or( Restrictions.eq( /*here should be "THIS"*/, user.getDomain() ), Restrictions.in( /*here should be "THIS"*/, user.getDomain().getVisibleDomains() ) ) );
    } else
    {
        criteria.add( Restrictions.eq( /*here should be "THIS"*/, user.getDomain() ) );
    }

    return criteria.list();
}

As you may know, this won't work. Is there any way in criteria api to point at "this" entity, which criteria was writter for?

It would make life much easier, to point at object "Domain" and made hibernate do the work to compare "ID", instead of writting it all by myself (creating set of IDs and putting it in criteria)


Solution

  • // convert user.getDomain().getVisibleDomains() in
    List<long> visibleDomainIds = 
    
    Criteria criteria = session.createCriteria(Domain.class);
        .add(Restrictions.or(
            Restrictions.eq("id", user.getDomain().getId()), 
            Restrictions.in("id", visibleDomainIds)));