我正在使用 Envers 来审核我的一些数据库表。审核工作正常,我可以在相应表中使用我的自定义前缀等查看数据库中的数据。我无法查询任何数据,因为我总是收到以下 QueryException:
无法解析属性:originalId of:NaturalPerson [select e__,r__ from NaturalPerson e__,ExtendedRevisionEntity r__ where e__.originalId.RevisionID.id = r__.id order by e__.originalId.RevisionID.id asc]
这是查询代码:
AuditReaderFactory.Get(session).CreateQuery().ForHistoryOf<NaturalPerson, ExtendedRevisionEntity>().Results();
NaturalPerson 的映射
<?xml version="1.0" encoding="utf-8"?>
<hibernate-mapping assembly="Domain" namespace="Domain" xmlns="urn:nhibernate-mapping-2.2">
<joined-subclass name="NaturalPerson" schema="MySchema" table="NaturalPersons">
<key column="PersonID" />
<property name="Name" type="AnsiString"/>
</joined-subclass>
</hibernate-mapping>
使用 fluent 进行 Envers 配置:
configuration.SetEnversProperty(ConfigurationKey.AuditTableSuffix, " ");
configuration.SetEnversProperty(ConfigurationKey.DefaultSchema, "aud");
configuration.SetEnversProperty(ConfigurationKey.StoreDataAtDelete, true);
configuration.SetEnversProperty(ConfigurationKey.RevisionFieldName, "RevisionID");
configuration.SetEnversProperty(ConfigurationKey.RevisionTypeFieldName, "RevisionTypeID");
enversConf.Audit<NaturalPerson>();