Using sysdate in a ejb 3.0 named query

Hello,
Giving the following ejb 3 Named query:
@NamedQuery(name = "DcaMessage.findNew", query = "select o from DcaMessage o where o.nbAvisEmis<1 or (o.indMsgConsulte=0 and sysdate-o.dtDernierAvis>:nbJours)")
The result is:
Exception [TOPLINK-8004] (Oracle TopLink Essentials - 2006.8 (Build 060829)): oracle.toplink.essentials.exceptions.EJBQLException
Exception Description: A parsing problem was encountered resolving the alias - [sysdate].
How do I use sysdate (or any other element) to compute the number of days between now and the date defined in dtDernierAvis?
Thanks

Hi,
According to the EJB 3.0 specification, there are three date and time functions that can be used in EQL:
functions_returning_datetime:=
CURRENT_DATE |
CURRENT_TIME |
CURRENT_TIMESTAMP
The datetime functions return the value of current date, time, and timestamp on the database server.
I suppose your query should look like this
@NamedQuery(name = "DcaMessage.findNew", query = "select o from DcaMessage o where o.nbAvisEmis<1 or (o.indMsgConsulte=0 and CURRENT_DATE-o.dtDernierAvis>:nbJours)")
I never used these three functions myself, but it should be something like that.
HTH, Wouter van Reeven

Similar Messages

  • Update Named query in EJB

    Hi Experts,
    I have created an EJB DC to interact with CE database using JPA's and named query. My read query is working fine and i can see the output in WS Navigator. For "Update" i have written a named query like :
    @NamedQuery(name = "updatePos", query = "UPDATE StorePos p SET p.name= ?1 WHERE p.id= ?2 ")
    To use this named query i have written a method in session bean which is
    public int updateStorePos(String id, String name){
              Query update_query = em.createNamedQuery("updatePos");
              update_query.setParameter(1, name);
              update_query.setParameter(2, id);
              int updateData = update_query.executeUpdate();
              return updateData;
    Now when i execute this method in web service updateData returns value 0,1,2 depending on the number of Id's found. That means I am able to update at JPA layer but when i again execute the read method it displays old value. I am assuming there is some problem with commit. Can some one suggest how to resolve this issue.
    Regards
    Pranav

    Hi Adrian,
    Thanks a lot for quick reply. That was indeed a very help full reply. But sorry for sounding ignorant, this is my first try on JPA's and named query. I am not able to figur out the exact problem by myself. Giving you brief on what i am doing is:
    I have added a class in newly created EJB DC. This class holds my named queries and name of this class is StorePos.java
    This is the code which i have generated
    @Entity
    @NamedQueries( {
         @NamedQuery(name = "findAllPos",
         query = "SELECT p FROM StorePos p"),
         @NamedQuery(name = "updatePos",
                   query = "UPDATE StorePos p SET p.name= ?1 WHERE p.id= ?2 ")})
    @Table(name="TMP_TEST")
    public class StorePos implements Serializable {
         private static final long serialVersionUID = 1L;
         @Id
         private String id;
         private String name ;
          * @return the id
         public String getId() {
              return id;
          * @param id the id to set
         public void setId(String id) {
              this.id = id;
          * @return the name
         public String getName() {
              return name;
          * @param name the name to set
         public void setName(String name) {
              this.name = name;
    Now i have created a session bean to access this class and to make the things available as WS. Name of the bean is StorePosSessionBean.java and code written in it is
    @SuppressWarnings("unchecked")
    @Stateless
    @WebService
    public class StorePosSessionBean implements StorePosSessionLocal {
         @PersistenceContext(unitName="POS")
         private EntityManager em;
         public List<StorePos> getStorePos() {
         List<StorePos> storePos = em.createNamedQuery("findAllPos").getResultList();
         return storePos;
         public int updateStorePos(String id, String name){
              Query update_query = em.createNamedQuery("updatePos");
              update_query.setParameter(1, name);
              update_query.setParameter(2, id);
              int updateData = update_query.executeUpdate();
              em.setFlushMode(FlushModeType.COMMIT);
    //          em.close();
              return updateData;
    i am following this article for reference. this is for reading data from table
    http://www.sdn.sap.com/irj/scn/go/portal/prtroot/docs/library/uuid/b030e7fb-2662-2b10-0dab-c4aa52c3550b?quicklink=index&overridelayout=true
    Regards
    Pranav

  • Help with EJB Named Query

    How do you reference a user-defined database function in an EJB Named Query. There doesn't seem to be any problems in using built in functions like max and min. Any help is greatly appreciated.

    A little more information. It seems I have to retract one thing I said, I stated that the internal functions of the database were ok, this is incorrect. If I use the upper function in a named query I get the following.
    example:
    Internal Exception: Exception [TOPLINK-0] (Oracle TopLink - 10g Release 3 (10.1.3.0.0) (Build 060118)): oracle.toplink.exceptions.EJBQLException
    Exception Description: Syntax Recognition Problem parsing the EJBQL [select object(o) from SysUsers o where o.racfId = :racfId and o.inactiveDate is null and upper(o.pswd) = :pswd]. The parser returned the following [unexpected token: upper].
    In this example query I am trying to use the database upper function. Any Help?
    Thanks

  • How to Bind EJBs under COS Naming Service

    Hi,
    I want bind EJBs under COS Naming serices and
    how to lookup those EJBs from java clients.
    I am using Weblogic 5.1.
    thanks,
    -Ramesh

    Can you give a complete example of this? I'm having the same issue. We
    have CORBA clients that we want to redirect to EJB implementations
    instead of ORB servers. How do I bind the CORBA objects in CosNaming?
    The example provided with WLS seems to cover RMI/IIOP but doesn't cover
    CORBA client to EJB.
    Thanks,
    Andy Piper wrote:
    "Ramesh Raju" <[email protected]> writes:
    You can only bind CORBA objects in CosNaming, so you would have to
    bind RMI-IIOP stubs.
    andy
    Hi,
    I want bind EJBs under COS Naming serices and
    how to lookup those EJBs from java clients.
    I am using Weblogic 5.1.
    thanks,
    -Ramesh--

  • How to write named query if we want to use IN syntax in our sql statement?

    I cannot find a suitable category about named query, so please move to appropriate place if there is any.
    When we write named query, below statement is fine.
    Query q2 = em.createQuery("SELECT o FROM Table1 as o WHERE field1 = :input1");             q2.setParameter("input1", "value1");
    Now, my question is, how can I write this type of query when we want to use the IN sql syntax? As below statement CANNOT return correct results. Even I tried to put a pair of single quote [ ':input2' ], it won't help also.
    Query q2 = em.createQuery("SELECT o FROM Table1 as o WHERE field2 IN (:input2)");             q2.setParameter("input1", "3633, 3644");
    Can anyone suggest? Thanks.

    roamer wrote:
    Now, my question is, how can I write this type of query when we want to use the IN sql syntax? As below statement CANNOT return correct results. Even I tried to put a pair of single quote [ ':input2' ], it won't help also.
    Query q2 = em.createQuery("SELECT o FROM Table1 as o WHERE field2 IN (:input2)");
    q2.setParameter("input1", "3633, 3644");
    Can anyone suggest?The above is in your code right? Not in some configuration file?
    Then you do it the same way as with regular jdbc/sql.
    1. You start with a collection of values - call it collection A.
    1. Create a for loop that dynamically creates the string using 'bind' variables (whatever you want to call the 'colon' entity in the above).
    2. Call the createQuery method using the string that was created
    3. Create a second loop that iterates over A and populates with setParameter.
    Pseudo code
            Object[] A = ...
            String sql = "SELECT o FROM Table1 as o WHERE field2 IN (";
            for (int i=1; i <= A.length; i++)
                  if (i == 1)
                     sql += ":input" + i;
                 else
                     sql += ",:input" + i;
            sql += ")";
            Query q2 = em.createQuery(sql);
            for (int i=1; i <= A.length; i++
                  q2.setParameter("input" + i, A[i-1]);
                  }By the way there is a jdbc forum.

  • How to create olap cube using Named Query Table in Data source View

     I Create on OLAP Cube using Existing Tables Its Working Fine But When i Use Named Query Table with RelationShip To other Named query Table  It Not Working .So give me some deep Clarification On Olap Cube for Better Understanding
    Thanks

    Hi Pawan,
    What do you mean "It Not Working"? As Kamath said, please post the detail error message, so that we can make further analysis.
    In the Data Source View of a CUBE, we can define a named query. In a named query, you can specify an SQL expression to select rows and columns returned from one or more tables in one or more data sources. A named query is like any other table in a data source
    view (DSV) with rows and relationships, except that the named query is based on an expression.
    Reference:Define Named Queries in a Data Source View (Analysis Services)
    Regards,
    Charlie Liao
    TechNet Community Support

  • How to use SYSDATE as a default value of a bind variable in a query report?

    Hi,
    I want to use SYSDATE as default value for a bind variable in Query based report.
    I don't see any way to do it, someone helps?
    Thanks a lot.
    Paulo.

    You can aslo use #sysdate directly.
    Hi,
    The way I'm doing in my report is, I have a database function (f_ret_sysdate) with the following code
    create function f_ret_sysdate return varchar2
    begin
    return to_char(sysdate,'mm/dd/yyyy');
    end;
    Now, in the 'Customization Form Display Options' section of the report I'm calling this function as #f_ret_sysdate in the default value field of corresponding bind variable to display SYSDATE with the format.
    Hope this helps!...
    -Krishnamurthy

  • Using JarSettings to generate EJB client jar, but supported classes missed

    Appreciated for any comments in advance.
    I am using @jarSetting to generate EJB client jar file from workshop 9.2. The remote method of EJB has one input parameter that is defined as an interface. The interface is included in client jar, but the implementation of this interface is not.
    Please advise how I can add the implementation of this interface to client jar?
    Best Regards,
    James

    Hi James,
    I believe the algorithm for creating the client jar is to simply inspect the EJB interfaces using reflection and to include all user defined classes and exceptions that are referenced by the interfaces. In your case, it sounds like a class is not being included because it is not directly referenced by one of the EJB interfaces.
    I think the client jar creation algorithm can be described as "best effort" and unfortunately, it does not always end up including all classes needed by the client. I would recommend you add the additional classes manually using the jar tool.
    - Matt

  • Count of a query in Unix environment and use sysdate

    hi,
    i have a code below and i want this to be used in Unix env and i need to use sysdate where i hard coded the date but the time should remain as it is.
    select count(type),type from ebizp.bchistevent
    where (type = 'com.avolent.apps.event.LoginEvent' or type = 'com.avolent.apps.event.LogoutEvent')
    and(to_char(createdt, 'dd/mm/yy hh24:mi s') between '28/01/13 08:00:00' and '28/01/13 09:00:00')
    AND ( bucket = to_char(sysdate-1, 'YYYYMM') OR bucket = to_char(sysdate, 'YYYYMM') OR bucket = 0)
    group by type
    like it should be between 'sysdate 08:00:00' and 'sysdate 09:00:00')
    please suggest.

    Dates should be compared with dates values. Don't use to_char to compare date values.
    And dont use "TYPE" as a column name - it is a reserved key word..
    select count(type), type
    from ebizp.bchistevent
    where (
        type = 'com.avolent.apps.event.LoginEvent'
        or type     = 'com.avolent.apps.event.LogoutEvent'
    AND createdt BETWEEN trunc(sysdate)+(8/24) AND trunc(sysdate)+(9/24)
    and (
      bucket = to_char(sysdate-1, 'YYYYMM')
      or bucket    = to_char(sysdate, 'YYYYMM')
      or bucket    = 0
    GROUP BY type;And you can simplify the query
    select count(type), type
    from ebizp.bchistevent
    where type in
        ('com.avolent.apps.event.LoginEvent','com.avolent.apps.event.LogoutEvent')
    AND createdt BETWEEN trunc(sysdate)+(8/24) AND trunc(sysdate)+(9/24)
    and bucket in
         (to_char(sysdate-1, 'YYYYMM'),to_char(sysdate, 'YYYYMM'),'0')
    GROUP BY type;Edited by: jeneesh on Feb 19, 2013 2:42 PM

  • Derby db named query causes parse error when using derby db MONTH function

    Hi all!
    I'm trying to create an application using the persistance api and beans binding. I have created my database and entity classes.
    My problem is creating a named query that uses some of the functionality from the derby database (which is embedded in the application).
    I have a named query:
    @NamedQuery(name = "Vehicles.findbymotmonth", query = "SELECT v FROM Vehicles v WHERE MONTH(v.lastmotdate) = :monthnumber") The actual query works fine when I send it directly to the db (with the parameter filled in) but causes an exception when used as a named query:
    Local Exception Stack:
    Exception [TOPLINK-8025] (Oracle TopLink Essentials - 2.0.1 (Build b09d-fcs (12/06/2007))): oracle.toplink.essentials.exceptions.EJBQLException
    Exception Description: Syntax error parsing the query [Vehicles.findbymotmonth: SELECT v FROM Vehicles v WHERE MONTH(v.lastmotdate) = :monthnumber], line 1, column 32: unexpected token [MONTH].
    Internal Exception: line 1:32: unexpected token: MONTH
            at oracle.toplink.essentials.exceptions.EJBQLException.unexpectedToken(EJBQLException.java:389)
    ... I've tried looking for solutions online but it seems evryone just writes up the original java db application example provided by sun and no one has tried doing more than "select c from customers c".
    I'm using the netbeans ide (6.5).
    Please tell me there is a simple solution to this and the persistance API can handle complex queries!
    Thanks in advance.

    one solution: assume the toplink library to be so full of bugs as to be unusable and switch to the hibernate persistance manager where it works fine.
    Edited by: pointer2null on Feb 17, 2009 11:02 AM

  • Using swing to develop EJB project

    Hi, Folks
    I am using jbuilder7 to develop swing connect to ejb project, one requirement is that i should doing control with the editable table. That requirement make me to tied with JBuilder component JDBTable. However the development time would become remarkable long. does anybody have experience of using fancy swing and EJB in the same project?
    thansk in advance.

    forget to tell you I am using JDBTable already. the problem is that how
    could i serlize the dataset to EJB in a easy way? ok, you don't need to serialize your dataset to trasmit to server side. Class com.borland.dx.dataset.DataSetData implements Serializable interface already, so you can send your dataset to server and do not care about serialization. But what to do with this DataSet on server side is very interesting question ;). As for me, it's not very handly to pull out your data from Dataset on server side (DataSet "looks" like client-side class). But, of course, it's up to you.
    unfortunlly I should doing add, delete, edit from my table. So its
    pretty complex to deal with this sort of issue.Why complex? I don't think so. For example, you may set 2 buttons: "Set" and "Delete" under your Jtable view and just "to fish" data client entered in your Jtable string, pack this data in your own serializable model and send this data to server session facade. As for me that's very handly and fast. And there is no complexity...
    Regards.

  • What kind of database the SSMA uses to store metadata in the file named "source-metabase.mb" ?

    What kind of database the SSMA uses to store metadata in the file named "source-metabase.mb" ?
    I'm looking for the method to open the file and add 'cutom migration script' (some automatization).

    Hi Poman.Pokrovskij,
    When you generate SSMA Assessment Report, there are several files created and saved into Report folder under your SSMA project folder. It includes
    source-metabase.mb, project-container.mappings, preferences.prefs, and so on.
    . MD files are usually saved in plain text format including inline text symbols, defining how a text is formatted such as the indentations, its table formatting, fonts, and headers.
    SSMA provides a project setting that allow you to customize how to set customized database migration. For example, to customize data migration SQL statement, you can modify project setting by navigating to Tools and choosing Project Settings,
    then looking for the setting for
    Extended Data Migration Options and change the value to
    Show. You can select use custom select and modify the SQL statement.
    For more information about SSMA for Oracle, you can review the following articles.How To Perform Incremental Data Migration Using SSMA:
    http://blogs.msdn.com/b/ssma/archive/2010/10/04/how-to-perform-incremental-data-migration-using-ssma.aspx
    Using SSMA Project Setting to Customize Database Migration:
    http://blogs.msdn.com/b/ssma/archive/2011/03/16/using-ssma-project-setting-to-customize-database-migration.aspx?Redirected=true
    Regards,
    Sofiya Li
    Sofiya Li
    TechNet Community Support

  • Using 'SYSDATE' function in ACCESS 2000?

    'SYSDATE' function is not working in ACCESS 2000 , is there any other
    alternative function available in access.
    I use a select statement using SYSDATE, but it did not work.

    I found it already.
    use the now() function.

  • Using SYSDATE in RMAN script

    Hi
    Each night I move an RMAN backup from a PROD server to a test server.
    Then using RMAN script with NOCATALOG, I restore/recover the database on the test server as show below:
    RUN{
    ALLOCATE CHANNEL dev1 DEVICE TYPE DISK;
    STARTUP NOMOUNT;
    RESTORE CONTROLFILE from AUTOBACKUP;
    SHUTDOWN;
    STARTUP FORCE MOUNT;
    RESTORE DATABASE;
    RECOVER DATABASE;
    ALTER DATABASE OPEN RESETLOGS;
    Of course the script fails at the "RECOVER DATABASE" command because it runs out of ARCH logs to apply at some point and therefore never gets to the final command of DATABASE OPEN. I would like to change that line to something like:
    RECOVER DATABASE UNTIL TIME 'SYSDATE:02:45:00';
    The above fails with an RMAN error of "expected number".
    Of course I could use SET UNTIL TIME "to_date('SYSDATE 02:45:00','DD-MON-YYYY HH24:MI:SS')"; although I have the same problem, i.e., getting RMAN to accept SYSDATE as the date portion of the point in time recovery.
    Oddly, from an RMAN prompt and within brackets, I can issue the following command successfully:
    RMAN {
    set until time "to_date('SYSDATE 02:45:00','DD-MON-YYYY HH24:MI:SS')";
    command completed successfully
    So my question is, how can I use SYSDATE in an RMAN point in time recovery and have sysdate represent the current date, either in the RECOVER DATABASE line or the SET UNTIL TIME line?
    Thanks.

    user522620 wrote:
    Hi
    Each night I move an RMAN backup from a PROD server to a test server.
    Then using RMAN script with NOCATALOG, I restore/recover the database on the test server as show below:
    RUN{
    ALLOCATE CHANNEL dev1 DEVICE TYPE DISK;
    STARTUP NOMOUNT;
    RESTORE CONTROLFILE from AUTOBACKUP;
    SHUTDOWN;
    STARTUP FORCE MOUNT;
    RESTORE DATABASE;
    RECOVER DATABASE;
    ALTER DATABASE OPEN RESETLOGS;
    So my question is, how can I use SYSDATE in an RMAN point in time recovery and have sysdate represent the current date, either in the RECOVER DATABASE line or the SET UNTIL TIME line?
    Thanks.
    Given:
    SQL> alter session set NLS_DATE_FORMAT='DD-MON-YYYY HH24:MI:SS';
    SQL> select to_char(trunc(sysdate)+(2/24)+(45/1440),'dd-mon-yyyy hh24:mi') from
    dual;
    TO_CHAR(TRUNC(SYS
    25-JUN-2012 02:45:00
    Use this (uses to_date)
    RUN{
    set until time "to_date(trunc(sysdate)+(2/24)+(45/1440),'DD-MON-YYYY HH24:MI:SS')";
    ALLOCATE CHANNEL dev1 DEVICE TYPE DISK;
    STARTUP NOMOUNT;
    RESTORE CONTROLFILE from AUTOBACKUP;
    SHUTDOWN;
    STARTUP FORCE MOUNT;
    RESTORE DATABASE;
    RECOVER DATABASE;
    ALTER DATABASE OPEN RESETLOGS;
    ## if that command fails, it will fall to the next command as the run blocks are autonomous.
    RUN{
    ALTER DATABASE OPEN RESETLOGS;
    }

  • Can I use SYSDATE in the WHERE clause to limit the date range of a query

    Hi,
    Basicaly the subject title(Can I use SYSDATE in the WHERE clause to limit the date range of a query) is my question.
    Is this possible and if it is how can I use it. Do I need to join the table to DUAL?
    Thanks in advance.
    Stelios

    As previous poster said, no data is null value, no value. If you want something, you have nvl function to replace null value by an other more significative value in your query.<br>
    <br>
    Nicolas.

Maybe you are looking for