我在代码中使用以下 HQL
string sPastDueForCustomer = @"select
inv.fInvoiceDate as fInvoiceDate,
cust.fName as fCustomerName,
inv.fInvoiceNumberDisplay as fInvoiceNumberDisplay,
inv.fBalance as fBalance,
inv.fDueDate as fDueDate,
datediff(day, :GenerateDate, inv.fDueDate) as fDaysPastDue
FROM tARInvoice as inv INNER JOIN inv.Customer as cust
Where inv.fDueDate < :GenerateDate - "
+
ARApplicationSetup[0].fGracePeriod
+
@"
And inv.fInvoiceType= 'Manual'
And inv.fCustomerID = :CustomerID
And inv.fBalance > 0
And inv.fIsPosted = 1
And inv.fIsVoided = 0";
//get the result of query and return the object of PaymentInvoiceDetails
IList<tARInvoice> PastDueForCustomer =
Session.CreateQuery(sPastDueForCustomer)
.SetGuid("CustomerID", CustomerId)
.SetDateTime("GenerateDate", GenerateDate)
.SetResultTransformer(Transformers.AliasToBean<tARInvoice())
.List<tARInvoice>();
当我运行它时,我收到以下错误:
No data type for node:
MethodNode (datediff(exprList day ? (tarinvoice0_.fDueDate tarinvoice0_.fARInvoiceID fDueDate)))
[select
inv.fInvoiceDate as fInvoiceDate,
cust.fName as fCustomerName,
inv.fInvoiceNumberDisplay as fInvoiceNumberDisplay,
inv.fBalance as fBalance,
inv.fDueDate as fDueDate
,datediff(day, :GenerateDate,inv.fDueDate) as fDaysPastDue
FROM tARInvoice as inv INNER JOIN inv.Customer as cust
Where inv.fDueDate < :GenerateDate - 15
And inv.fInvoiceType= 'Manual'
And inv.fCustomerID = :CustomerID
And inv.fBalance > 0
And inv.fIsPosted = 1
And inv.fIsVoided = 0]
的类型fDaysPastDue
是int
。