Чтобы неявно вызывать псевдоним / соединение для одного-к-одному, разве вы не должны использовать точечную нотацию? А потом проверяем любое поле в вашем Address-классе:
IList employeesWithAddresses = sess.CreateCriteria(typeof(Employee))
.Add( Expression.IsNotNull("Address.Id") )
.List();
Это, вероятно, тот же подход, что и у Карины, но я считаю, что он равен .CreateAlias (). С CreateAlias вы можете указать FetchMode (тип используемого объединения), но так как вам нужны строки с соответствующими адресами, это не должно быть обязательным (потому что INNER по умолчанию). Также не обязательно проверять, является ли оно нулевым.
IList employeesWithAddresses = sess.CreateCriteria(typeof(Employee))
.CreateAlias("Address")
.List();