Hibernate - 如果属性不为null,如何获取属性?

时间:2012-02-14 10:03:20

标签: java hibernate

UserCar为1对1。但User并不总是Car

query = session.createQuery("select u from User as u join fetch u.car");

我只有汽车用户。如何修改此查询以获取所有用户?

我正在使用fetch,因为我需要在会话之外使用user.car,我这样做了吗?

感谢。

3 个答案:

答案 0 :(得分:8)

使用专为此明确目的而设计的left join

query = session.createQuery("select u from User as u left join fetch u.car");

答案 1 :(得分:2)

如果您只想获得所有用户,那么为什么不这样做:

List users = session.createCriteria(User.class).list();

如果您的User类映射到Cars,那么返回的User对象将具有与之关联的Car数据,Hibernate将自动返回此数据(取决于模式,它可能是延迟加载的,即它只会检索一旦你尝试使用它,实际的Cat数据。)

答案 2 :(得分:1)

结果中你需要这辆车吗?否则,“从用户u中选择你”应该完成这项工作。

如果car可以为null但您需要检索它,则可以执行连接提取“从用户u select left join get fetch u.car中选择你”。 希望这是正确的语法。外连接确保即使使用空关系也能获得结果。在这种情况下,连接提取应该足够了。

在hibernate docs中有一些(和工作)示例(“join fetch”):http://docs.jboss.org/hibernate/core/3.6/reference/en-US/html_single/