为什么这个查询不起作用它总是返回一个空列表(映射是可以的,我确定数据库有数据!)任何想法?
var ids = //IList<int> of ids
var result = _session.CreateCriteria(typeof (User))
.Add(Restrictions.InG("Id", ids))
.CreateCriteria("Posts")
.AddOrder(Order.Asc("CreatedOn"))
.SetMaxResults(20)
.List<Post>();
Run Code Online (Sandbox Code Playgroud)
尝试使用这样的东西:
List<User> users = _session.CreateQuery("FROM User ORDER BY CreatedOn").List<User>().Where(u => ids.Contains(u.Id));
var posts = new List<Post>();
foreach(User user in users) {
posts.AddRange(user.Posts);
}
Run Code Online (Sandbox Code Playgroud)
我想这将取决于你的用户已经有一个Posts集合,但大多数hibernate实现应该有类似的东西.
你也可以这样压缩它:
List<Post> posts = _session.CreateQuery("FROM Post ORDER BY CreatedOn").List<Post>().Where(p => ids.Contains(p.User.Id));
Run Code Online (Sandbox Code Playgroud)
或第三种选择:
List<Post> posts = _session.CreateQuery("FROM Post ORDER BY CreatedOn WHERE User.Id IN (" + ids.ToArray().Join(",") + ")").List<Post>();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2630 次 |
| 最近记录: |