关于“这个”对象的标准?

时间:2012-10-04 14:31:02

标签: hibernate criteria criteria-api hibernate-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();
}

如您所知,这不起作用。在标准api中是否有任何方法指向“this”实体,哪个标准是写作?

它会让生活变得更加轻松,指向对象“Domain”并让hibernate做比较“ID”的工作,而不是自己写一切(创建一组ID并将其置于标准中)

1 个答案:

答案 0 :(得分:0)

// 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)));