Couldn't you select for/build the `Customer` object the first time `Company#customer` is accessed? I'm not seeing why that would be impossible, though it could be this is counter to a core value of Hibernate that I'm currently unaware of.