As I think of it now, I would vote for @RogerKratz's approach of returning A with null reference to B. Think of revision as a state after commit operation. @adamw: can you share your opinion?

To apply non-DEL revision type restriction only when necessary, please see how I pass bool flag indicating removed entity state to ToOneEntityLoader#loadImmediate(...) (https://github.com/lukasz-antoniak/hibernate-core/commit/189a77649a69360fa76b62a263b9a7a84f3ad61d#L7R22). Mentioned commit fixes also collections, but I have to double check that. Main idea: when I traverse removed entity revision, I am looking for related objects valid at that time plus objects removed at a very same revision.

WDYT?