Hibernate 有关「;这";对象

Hibernate 有关「;这";对象,hibernate,criteria,hibernate-criteria,Hibernate,Criteria,Hibernate Criteria,我试图建立以下标准: public List<Domain> getDomains() { Session session = sessionFactory.getCurrentSession(); Criteria criteria = session.createCriteria( Domain.class ); User user = userManager.getLoggedInUser(); if ( user.getDomain().get

我试图建立以下标准:

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();
}
public List getDomains()
{
Session Session=sessionFactory.getCurrentSession();
条件=session.createCriteria(Domain.class);
User=userManager.getLoggedInUser();
if(user.getDomain().getVisibleDomains()!=null&&user.getDomain().getVisibleDomains().size()>0)
{
criteria.add(Restrictions.or(Restrictions.eq(/*此处应为“THIS”*/,user.getDomain()),Restrictions.in(/*此处应为“THIS”*/,user.getDomain().getVisibleDomains()));
}否则
{
criteria.add(Restrictions.eq(/*这里应该是“THIS”*/,user.getDomain());
}
返回条件。list();
}
你可能知道,这是行不通的。在CriteriaAPI中是否有任何方法指向“this”实体(编写者是为哪个标准编写的)

指向对象“域”并让hibernate做比较“ID”的工作,而不是自己编写(创建一组ID并将其放入标准中),这将使生活变得更加简单。

//在中转换user.getDomain().getVisibleDomains()
列表VisibleDomainId=
条件=session.createCriteria(Domain.class);
.添加(限制)或(
Restrictions.eq(“id”,user.getDomain().getId()),
限制。在(“id”,VisibleDomainID));
//在中转换user.getDomain().getVisibleDomains()
列表VisibleDomainId=
条件=session.createCriteria(Domain.class);
.添加(限制)或(
Restrictions.eq(“id”,user.getDomain().getId()),
限制。在(“id”,VisibleDomainID));

我最后就是这样做的。我只是想知道它是否有可能以我想要的方式…似乎不是为了让它更通用我在NHibernate中使用了Projections.id()和ClassMetaData.GetId(),我不知道Hibernate中是否存在类似的东西我最终这样做了。我只是想知道这是否可能是我想要的方式…似乎不是为了让它更通用我在NHibernate中使用了Projections.id()和ClassMetaData.GetId(),我不知道在Hibernate中是否存在类似的东西
// 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)));