1

我正在尝试建立以下标准:

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 中是否有任何方法可以指向“这个”实体,这是为哪个标准编写的?

指向对象“域”并让hibernate完成比较“ID”的工作会让生活变得更轻松,而不是自己编写(创建一组ID并将其放入标准中)

4

1 回答 1

1
// 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)));
于 2012-10-05T09:58:07.820 回答