类定义如下:
class User {
public int ID { get; set; }
public string OpenID { get; set; }
public IList<Tag> Tags { get; set; }
}
OpenID设置为natural-id,以便二级缓存识别出这一点。
我有这个HQL查询,它返回一个用户标签列表。
db.CreateQuery("select Tags from User where OpenID = :openId")
.SetString("openId", openId)
.List<Tag>();
据我所知,HQL没有将OpenID标识为natural-id的语法,但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>();
答案 0 :(得分:0)
db.CreateCriteria<User>()
.SetProjection(Projections.Property("Tags"));
.Add(Restrictions.Eq("OpenID", openId));
.List<Tag>();
不确定这个NaturalId,从未使用它,我可能会添加一个正常的限制。