Fix for NullReferenceException in lazy bidirectional many-to-one properties #53
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Having a many-to-one bidirectional mapping with lazy properties will result in a
NullReferenceException
inAuditEventListener
. This change to theAuditEventListener
will fix this. There is also an accompanying unit test for this.The underlying problem that triggered the
NullReferenceException
was due to the fact that the entity name could not be resolved since it was not of the expected type. The type in the case of a lazy property is a<entity name>ProxyForFieldInterceptor
and not the actual type of the entity. Using the NHibernate utility methodBestGuessEntityName
will resolve to the actual entity name thus satisfying the mapping in Envers.As I am not familiar to the Envers code base I tried to keep the
AuditEventListener
changes minimal not to disturb the functionality. All tests passes and this fixes the problem but I'm not totally sure how the mapping actually works and thevalue
argument is still of theProxyForFieldInterceptor
type. Could this be a problem?