That doesn't fully solve the problem.

`RootDomainObject` is meant to be a singleton, and the fact that it may return null is simply an implementation optimization, meaning that for all intents and purposes, it can be assumed that it always returns an instance (this will be true in a not-so-distant future).

Besides, it doesn't cover all cases. Consider that the application is initialized, caching the RDO instance. At a future point in time, one of these classes may be initialized outside of a transaction. The problem will still occur: RDO.getInstance() will return the cached instance,  and invoking `root.getInstitutionUnit()` will fail.

My point is: statics are evil! They are acceptable if their value is a compile-time constant, otherwise they should be avoided. You may want to consider inlining the usages of such constants.