Помните, что необходимо кэшировать сущность (из сеанса, из которого вы ее загрузили) в статическую переменную, к которой затем обращается другой сеанс (например, извлекаемый из созданной вами системы кэширования).
Экземпляры сущностей связаны с запоминанием сеанса, поэтому не следует смешивать и сопоставлять экземпляры через границы сеанса.
Я решил это раньше, создав облегченную версию класса (которая не поддерживает NH Session) и вместо этого кэшируя этот базовый класс.
В качестве альтернативы, используйте кэш 2-го уровня, у которого нет этой проблемы.