2012-10-04 69 views
0

我試圖建立以下條件:「this」對象的標準?

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中是否有任何方法可以指向「此」實體,哪個標準爲?

它將使生活變得更輕鬆,在目標點「域」,並取得休眠做的工作比較一下,「ID」,而不是由我自己書面方式這一切(創建一個ID集,並把它的標準)

回答

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))); 
+0

我最終這樣做了。我只是想知道是否有可能的方式,我希望它..似乎不是 – kamil

+0

使它更通用我使用Projections.id()在NHibernate和ClassMetaData.GetId(),我不知道這樣的事情是否存在在休眠 – Firo