这可能是一个非常简单的答案,因为我相信这并不少见。我看到一些类似的问题,但似乎没有什么可以描述我的问题。
我有两个对象:一辆车和一个人。它们是多对多的关系,即一辆汽车可以由多个人拥有,而一个人可以拥有多辆汽车。 Car
有一组惰性初始化Drivers
:
@ManyToMany(targetEntity=Person.class, fetch=FetchType.LAZY)
private Set<Person> people;
我想找到车主在 25 岁以下的所有蓝色汽车:
Criteria foo = persistenceManager.createCriteria(Car.class, "myCarAlias");
Criteria bar = foo.createCriteria("drivers", "myDriverAlias");
//add restrictions on foo and bar for blue and age, respectively
baz = foo.list();
我的问题是当我遍历列表并调用getDrivers()
每辆车时,它会初始化集合并获取该车的所有驱动程序。我猜.list()
我跑的并没有在每辆车上设置结果。
如果我手动运行正在生成的 SQL 休眠,我会得到我期望的结果,所以我有理由确定标准不是问题。
我可以理解为什么会发生这种情况,但我不确定如何在不遍历每辆车并为每辆车运行驱动程序的情况下绕过它。如果可能的话,我想避免这样做,并希望得到任何建议。
提前致谢!