Re: use Date values in ExpressionFactory.exp

John Huss <[email protected]>
Newsgroups gmane.comp.java.cayenne.user
Message-ID <CAOUwSGs+bzbxB2QK38QKTqV+RvG_Lt5pUqK93VQgfiVJrxDtPQ@mail.gmail.com>
I think the string value would be $0 or $1. Or you can use .params with a
map to do by name and use $date or whatever you want to name it.

On Sat, Jan 2, 2021 at 8:18 AM Andrea Biasillo <[email protected]> wrote:

> Yes, there is, but how will be the syntax?
>
>
>
> On 2021/01/02 14:07:55, John Huss <[email protected]> wrote:
>
> > Isn’t there a version of .exp that takes args? You can pass a date object
>
> > directly there without worrying about formatting.
>
> >
>
> > On Sat, Jan 2, 2021 at 7:49 AM Andrea Biasillo <[email protected]> wrote:
>
> >
>
> > > Hi Mike!
>
> > >
>
> > >
>
> > >
>
> > > I have tried with:
>
> > >
>
> > >
>
> > >
>
> > > Expression expDate = ExpressionFactory.exp("modifiedDate>
>
> > > TO_DATE('2003-07-17','yyyy-mm-dd')");
>
> > >
>
> > >
>
> > >
>
> > > but I get this exception:
>
> > >
>
> > >
>
> > >
>
> > > Caused by: org.apache.cayenne.exp.ExpressionException: [v.4.2.M1 Nov 26
>
> > > 2020 09:20:26] Encountered " "(" "( "" at line 1, column 22.
>
> > >
>
> > > Was expecting one of:
>
> > >
>
> > >     <EOF>
>
> > >
>
> > >     "or" ...
>
> > >
>
> > >     "and" ...
>
> > >
>
> > >     "|" ...
>
> > >
>
> > >     "^" ...
>
> > >
>
> > >     "&" ...
>
> > >
>
> > >     "<<" ...
>
> > >
>
> > >     ">>" ...
>
> > >
>
> > >     "+" ...
>
> > >
>
> > >     "-" ...
>
> > >
>
> > >     "/" ...
>
> > >
>
> > >     "*" ...
>
> > >
>
> > >
>
> > >
>
> > > and I really would want to have all my expression in one string,
> without
>
> > > use greaterExp.
>
> > >
>
> > > Like this:
>
> > >
>
> > >
>
> > >
>
> > > Expression exp = ExpressionFactory.exp("businessPartnerName='andrea'
> and
>
> > > businessPartnerCode!='rossi' or ((businessPartnerCode!='bianchi' and
>
> > > maxAdvancePaymentPercent>9) or businessPartnerCode!='pippo' or
>
> > > (maxAdvancePaymentPercent>100 or maxAdvancePaymentPercent<10)) and
>
> > > modifiedDate> TO_DATE('2003-07-17','yyyy-mm-dd')");
>
> > >
>
> > >
>
> > >
>
> > > But maybe it is not possible.
>
> > >
>
> > >
>
> > >
>
> > > Andrea
>
> > >
>
> > >
>
> > >
>
> > > On 2021/01/02 12:45:49, Mike Kienenberger <[email protected]> wrote:
>
> > >
>
> > > > Oracle expects SQL like the following to compare dates.
>
> > >
>
> > > >
>
> > >
>
> > > >        MODIFIED_DATE > TO_DATE('2003-07-17','yyyy-mm-dd')
>
> > >
>
> > > >
>
> > >
>
> > > > You either need to use that in your exp() method, or use
> greaterExp(),
>
> > >
>
> > > > which can automatically generate the needed sql for the current
> database.
>
> > >
>
> > > >
>
> > >
>
> > > >         Date date = new GregorianCalendar(2003, Calendar.JULY,
>
> > >
>
> > > > 17).getTime() ;
>
> > >
>
> > > >         Expression matchDateGreaterThanDate1 =
>
> > >
>
> > > > ExpressionFactory.greaterExp("MODIFIED_DATE", date);
>
> > >
>
> > > >
>
> > >
>
> > > >
>
> > >
>
> > > >
>
> > >
>
> > > >
>
> > >
>
> > > > On Sat, Jan 2, 2021 at 3:45 AM Andrea Biasillo <[email protected]>
> wrote:
>
> > >
>
> > > >
>
> > >
>
> > > > > Hi!
>
> > >
>
> > > > >
>
> > >
>
> > > > > Is it possible to use Date values in ExpressionFactory.exp?
>
> > >
>
> > > > >
>
> > >
>
> > > > > This works very well:
>
> > >
>
> > > > >
>
> > >
>
> > > > > Expression exp =
> ExpressionFactory.exp("businessPartnerName='andrea'
>
> > > and
>
> > >
>
> > > > > businessPartnerCode!='rossi' or ((businessPartnerCode!='bianchi'
> and
>
> > >
>
> > > > > maxAdvancePaymentPercent>9) or businessPartnerCode!='pippo' or
>
> > >
>
> > > > > (maxAdvancePaymentPercent>100 or maxAdvancePaymentPercent<10))");
>
> > >
>
> > > > >
>
> > >
>
> > > > > but if I use a Date value like this:
>
> > >
>
> > > > >
>
> > >
>
> > > > > Expression expDate = ExpressionFactory.exp("modifiedDate>
>
> > > '2003-07-17'");
>
> > >
>
> > > > >
>
> > >
>
> > > > > The database, Oracle in my case, will complain:
>
> > >
>
> > > > >
>
> > >
>
> > > > > Literal does not match format string
>
> > >
>
> > > > > (the database expects something like this:  MODIFIED_DATE > DATE
>
> > >
>
> > > > > '2003-07-17')
>
> > >
>
> > > > >
>
> > >
>
> > > > > Any input?
>
> > >
>
> > > > >
>
> > >
>
> > > > > Andrea
>
> > >
>
> > > > >
>
> > >
>
> > > > >
>
> > >
>
> > > > >
>
> > >
>
> > > > >
>
> > >
>
> > > > >
>
> > >
>
> > > > >
>
> > >
>
> > > >
>
> > >
>
> > >
>
> >
>
>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.