在我的数据库中的每个对象上,我都拥有CreatedBy,CreatedOn,ModifiedOn和ModifiedBy的审计字段。将CreatedBy和ModifiedBy映射到我创建的映射到我的用户表的User对象。我最初将UserId(主键)存储在这些字段中,并且所有东西都映射得很好,其映射定义为 <many-to-one name="CreatedBy" column="CreatedBy" lazy="proxy"></many-to-one>
。NHIbernate:映射审计用户
但是,我想切换这些字段来存储用户名,而我找不到如何从非主键字段加载持久性用户实体。我研究过IUserTypes,ICompositeUserType,事件监听器和其他一些随机事物,但我似乎无法完成任何工作。
截至目前为止,我已经添加了一个CreatedByName和ModifiedByName字段,用于存储用户名,而原始字段仍然存储ID(在使用CompositeUserType时执行此操作),因此我有ID和用户名如果需要的话。
这似乎是应该足够普遍的东西,应该有一个解决方案,但我找不到任何东西。
谢谢。我发布这个后很快就找到了。看起来它对我设置的L2缓存起作用,因为它没有使用主键进行查询,所以我可能不得不重新考虑如何执行所有这些操作。 – jwynveen 2011-03-23 14:53:51