The Setresulttransformer method of NHibernate will appear under Oracle "Could not find a setter-for-property" error, which is a bug that NHibernate uses under Oracle. I can fix it myself for this bug.
Download the NHibernate source code, the property under the "ChainedPropertyAccessor.cs" minor changes will fix this bug, the codes are as follows:
using system;namespace nhibernate.properties{ using System.text.regularexpressions; [serializable] public class ChainedPropertyAccessor : IPropertyAccessor { private readonly IPropertyAccessor[] chain; public chainedpropertyaccessor (Ipropertyaccessor[] chain) { this.chain = chain; } #region IPropertyAccessor Members Public igetter getgetter (System.type theclass, string propertyname) { for (int i = 0; i < chain. length; i++) { ipropertyaccessor candidate = chain[i]; try { return candidate. Getgetter (Theclass, propertyname); } catch (propertynotfoundexception) &NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&Nbsp; { // ignore } } throw new propertynotfoundexception (theclass, propertyname, "getter"); } public ISetter Getsetter (System.type theclass, string propertyname) { for (int i = 0; i < chain. length; i++) { ipropertyaccessor candidate = chain[i]; try { return candidate. Getsetter (Theclass, tomodelname (PropertyName)); } catch (propertynotfoundexception) { // } } throw new propertynotfoundexception (theclass, propertyname, "setter"); } public bool CanAccessThroughReflectionOptimizer { get { return false; } } #endregion private static string tomodelname (STRING&NBSP;STR) { str = str. ToloweR (); var temp = Regex.Replace (str, @ "_[a-z"?, M=>m.tostring (). Substring (1). ToUpper ()); var result = regex.replace (temp, @ "^[a-z"?, m => m.tostring (). ToUpper ()); return result; } }}