Nhibernate envers已修改的列无法正确跟踪集合

时间:2015-11-17 14:54:41

标签: nhibernate nhibernate-envers

我有一个看起来像的模型:

class Case
{
    public virtual ISet<CaseToCaseTag> CaseTags { get; set; }
    public virtual DateTime LastModified { get; set; }
}

class CaseToCaseTag
{
    public virtual Case Left { get; set; }
}

当审计与envers的这种关系时,我在从集合中删除值时遇到了修改后的属性跟踪问题。

如果在从集合中删除值时,我在case实体中更改的是“set-removal”,那么envers会正确跟踪CaseTags属性是否被修改修订。但是,如果我还更改了任何其他属性,例如LastModified属性,则不会正确设置CaseTags_MOD标志。

我已将此跟踪(我认为)跟踪AuditProcess.AddWorkUnit方法。 当我只从集合中移除时,只会添加一个WorkUnitCollectionChangeWorkUnit),但当我还更改另一个属性时,另外WorkUnit(一个ModWorkUnit)也会被添加。

然后似乎发生的事情是CollectionChangeWorkUnit被弃置而不是ModWorkUnit,而 String url = "http://qjtest.azurewebsites.net/api/test?name=ayman"; JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(url, null, new Response.Listener<JSONObject>() { @Override public void onResponse(JSONObject response) { Toast.makeText(mContext, "onResponse:\r\n" + response.toString(), Toast.LENGTH_SHORT).show(); } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { Toast.makeText(mContext, "onErrorResponse:\r\n" + error.toString(), Toast.LENGTH_SHORT).show(); } }); requestQueue.add(jsonObjectRequest); 又不会收集对集合的更改。

我试图不支持,还是有办法绕过它?

1 个答案:

答案 0 :(得分:1)

听起来像个臭虫。请创建一个带有最小映射的拉取请求以重现该问题。