Для каждого объекта в моей БД у меня есть поля аудита для CreatedBy, CreatedOn, ModifiedOn и ModifiedBy. CreatedBy и ModifiedBy сопоставляются с объектом User, который я создал, для сопоставления с таблицей пользователей. Первоначально я сохранял UserId (первичный ключ) в этих полях, и все отображалось нормально с определением сопоставления
<many-to-one name="CreatedBy" column="CreatedBy" lazy="proxy"></many-to-one>
.
Однако я хочу переключить эти поля для хранения имени пользователя, но не могу найти, как загрузить постоянную сущность пользователя из поля, не являющегося первичным ключом. Я изучил IUserTypes, ICompositeUserType, прослушиватели событий и некоторые другие случайные вещи, но, похоже, я не могу заставить что-либо работать полностью.
На данный момент я добавил поля CreatedByName и ModifiedByName, в которых хранится имя пользователя, в то время как в исходных полях все еще хранится идентификатор (сделал это при игре с CompositeUserType), поэтому у меня есть и идентификатор, и имя пользователя, которое я могу использовать, если необходимо.
Это похоже на то, что должно быть достаточно распространенным, чтобы было решение, но я ничего не могу найти.