Hibernate from version 3.0.5 knows about the natural key.
Since it is common and recommended practise to implement equals() and hashCode() based on the properties of the natural key, why not generate the bytecode of these methods automatically when using CGLib proxies? This would eliminate lots of potential for implementation and refactoring errors.