我正在使用Envers来审核我的一些数据库表。 审核很好,我可以使用我的自定义前缀等查看相应表中数据库中的数据。 我无法查询任何数据因为我总是得到以下QueryException:
无法解析属性:originalId of:NaturalPerson [从NaturalPerson e__中选择e __,r__,在ExtendedRevisionEntity r__中选择e__.originalId.RevisionID.id = r__.id由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>
使用流畅的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>();
答案 0 :(得分:0)
如上面的评论所述,问题是AuditTableSuffix中的“唯一空格”。
代码中的审计实体名称是 audittableprefix +“原始实体名称”+ audittablesuffix
查询时,“空格”表示无效(“select a from b a
”变为“select a from b a
”),将读取错误的数据。
请在此处添加有关它的JIRA问题 https://nhibernate.jira.com/browse/NHE 最好是通过一个小的,孤立的失败测试。