在提问之前,我查看了所有与这个主题相关的帖子。
我有团队和成员,它们之间存在多对多关系。
基本上:成员 -> 成员团队 <- 团队
我的查询尝试获取所有属于查询成员所属团队的成员(包括查询成员)。
我使用以下 FluentHibernate 创建了我的表:
TeamMap 代码:
Id(x => x.ID).GeneratedBy.GuidComb().UnsavedValue("00000000-0000-0000-0000-000000000000");
HasManyToMany(x => x.Members)
.Table("MemberTeam")
.ChildKeyColumn("TeamID")
.ParentKeyColumn("MemberID");
MemberMap 代码:
Id(x => x.ID).GeneratedBy.GuidComb().UnsavedValue("00000000-0000-0000-0000-000000000000");
HasManyToMany(x => x.Teams)
.Table("MemberTeam")
.ChildKeyColumn("MemberID")
.ParentKeyColumn("TeamID");
我用以下代码进行查询:
DetachedCriteria dCriteria = DetachedCriteria.For(typeof(Team), "team")
.SetProjection(Projections.Id())
.Add(Property.ForName("team.ID").EqProperty("mt.ID"));
ICriteria criteria = Session.CreateCriteria(typeof (Member), "member")
.CreateAlias("Teams", "mt")
.Add(Subqueries.Exists(dCriteria))
.Add(Restrictions.Eq("mt.MemberID", new Guid(memberID)));
IList<Member> list = criteria.List<Member>();
我知道我做错了什么,但是我不明白是什么
任何帮助都将不胜感激
非常感谢!
P.S. 我的地图似乎没问题,我可以正常保存对象!