我正在尝试制定以下标准:
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并将其置于标准中)
答案 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)));