Класс определяется следующим образом:
class User {
public int ID { get; set; }
public string OpenID { get; set; }
public IList<Tag> Tags { get; set; }
}
OpenID установлен как натуральный идентификатор, так что кэш второго уровня распознает это.
У меня есть этот HQL-запрос, который возвращает список пользовательских тегов.
db.CreateQuery("select Tags from User where OpenID = :openId")
.SetString("openId", openId)
.List<Tag>();
Насколько я знаю, HQL не имеет синтаксиса для идентификации OpenID как натурального-идентификатора, но CriteriaQuery имеет это (Restrictions.NaturalId () ...)
Так что мне нужно преобразовать этот запрос в CriteriaQuery.
Что-то в этом направлении:
db.CreateCriteria<User>()
.Add(Restrictions.NaturalId().Set("OpenID", openId))
//I need to tell criteria query that I want to return Tags property here - I don't know how to do that
.List<Tag>();