开发者

Path Expected for Join! Nhibernate Error

开发者 https://www.devze.com 2023-02-28 18:03 出处:网络
I trying to do a join and I keep getting this error Path expected for join! [SELECT t.CourseId FROMTask as t INNER JOIN

I trying to do a join and I keep getting this error

Path expected for join! [SELECT t.CourseId FROM Task as t INNER JOIN Courses as c, CoursePermissions as cp WHERE (t.CourseId = 1)]

I have

const string query = "SELECT t.CourseId FROM  Task as t INNER JOIN Courses as c, CoursePermissions as cp WHERE (t.CourseId = 1)";

var a = session.CreateQuery(query);

My Sql I am trying to achieve

SELECT     dbo.Tasks.CourseId
FROM         dbo.Tasks INNER JOIN
                      dbo.Courses ON dbo.Tasks.CourseId = dbo.Courses.CourseId INNER JOI开发者_开发问答N
                      dbo.CoursePermissions ON dbo.Courses.CourseId = dbo.CoursePermissions.CourseId
WHERE     (dbo.Tasks.CourseId = 1)

I am using nhibernate 3.1 and fluent nhibernate 1.2


It means that you using an inner join in HQL works a little different than using it in SQL. In HQL you join the tables by providing the "path", which is basically the referenced property of your class.

So instead of

SELECT t.CourseId FROM Task as t INNER JOIN Courses as c ...

you need to write

// c.Taks is the IList property in your Courses class
SELECT t.CourseId FROM Courses as c INNER JOIN c.Tasks as t ...


Although Florian Lim has suggested a great solution but in my case I didn't had IList for Tasks in Courses. I achieved that through Theta-Style Joins which actually is Cartesian product provide all possible combinations which can be filtered (in where clause) according to need.

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号