我有这段代码:
IList<Foo1> ou = session.CreateQuery("from Foo1 as f1 JOIN FETCH f1.foo2 as f2 USING (id_foo1) where f2.foo3.year ='2004'").List<Foo1>();
它返回Foo1中的所有对象并忽略where子句。为什么?哪里可能是错误的?
接下来的实验:
(1) from Foo2 as f2 where f2.year = '2004' //is OK
(2) from Foo1 as f1 JOIN FETCH f1.foo2 as f2 USING (id_foo1) //is OK
(3) from Foo1 as f1 JOIN FETCH f1.foo2 as f2 USING (id_foo1) where f2.year = '2004' //returns the same result as (2)
答案 0 :(得分:1)
答案 1 :(得分:1)
我遇到了同样的问题,对我来说也有点困惑,但在一个例子中我发现了这个注释:“你不需要WHERE子句,因为Hibernate”知道“如何匹配主键和外键关于映射。“这个“Where”与JOIN条件有关,所以只是尝试删除你的USING()部分。