在数据库上执行NHibernate的SqlString之前,我需要对其进行修改。具体来说,我需要将WHERE子句附加到SELECT / UPDATE / DELETE语句。 WHERE子句可能已经存在或可能不存在,这意味着我可能不得不修改它或添加其他部分。为此,我创建了一个拦截器:
const navigate = (routeName, params) => {
// DISPATCH ERROR
_navigator.dispatch(
NavigationActions.navigate({
routeName,
params
})
);
};
并在NHibernate中注册它:
public class SimpleInterceptor: EmptyInterceptor, IInterceptor
{
SqlString IInterceptor.OnPrepareStatement(SqlString sqlString)
{
if (!shouldQueryBeParsed(sqlString))
{
return sqlString;
}
//Add WHERE clause.
return modifiedSqlString;
}
private bool shouldQueryBeParsed(SqlString sqlString)
{
return !sqlString.StartsWithCaseInsensitive("INSERT");
}
}
我发现的唯一相关的线程是Modify SQL in NHibernate,但似乎不适用于我正在使用的NHibernate 5.2.3。
非常感谢您的帮助,因为这对我来说是一个障碍。