Rather than createCriteria for the OR Restrictrictions use the following.
Code:
Criteria criteria = session.createCriteria(Project.class);
...
criteria.createAlias("contactsAlias", "contacts");
criteria.createAlias("organizationsAlias", "organisations")
Disjunction disjunction = Restrictions.disjunction();
criteria.add(disjunction.add(Restrictions.like("contactsAlias.id", argument.getContactId()).add(Restrictions.like("organizationsAlias.id", argument.getOrganisationId()));
Bascially the createAlias will create a join (inner join by default) to your associations and then the disjunction will do the OR.
The brackets, etc in this above sample may be way off as I didn't compile it or anything but you should be able to get the gist.
Bear in mind that the default join for the create alias is an inner join so you might have to define an outer join type in your case.