Overloaded finder method allowed?

Hi,
Is it allowed to overload finder method in EJB CMP other than the findByPrimaryKey? Thank you

The number of parameters and their types define overloaded method names.
<query> <description></description> <query-method> <method-name>findBy<></method-name> <method-params> <method-param></method-param> <method-param></method-param> </method-params> </query-method> <ejb-ql></ejb-ql> </query>

Similar Messages

  • Class cast exception using Finder method

    Hello. I'm new to J2EE. I have set up one entity bean but am having trouble
    with my current one.
    Basically, I have two finder methods:
    public ShareHistory findByPrimaryKey(Integer historyId)
            throws FinderException, RemoteException;
        public Collection findByShare(String shareId)
             throws FinderException, RemoteException; findByPrimaryKey works fine, but findByShare causes a class cast exception in java.lang.String.
    The stack trace in the server logs shows that it is my ejbActivate method in my entity bean causing the problem:
    public void ejbActivate() {
          //String numberString = (String) context.getPrimaryKey();
          //historyId = new Integer(numberString);
        historyId = (Integer) context.getPrimaryKey();
        }The stack trace from my client shows that the class cast exception occurs
    in the client at the System.out.println("shareid" + ": " + sh.getShareId());
    line:
    Collection c = sharesHistoryHome.findByShare("DCAN");
                     Iterator i = c.iterator();
                          while (i.hasNext()) {
                         ShareHistory sh = (ShareHistory) i.next();
                    System.out.println("shareid" + ": " + sh.getShareId());
                    System.out.println("value" + ": " + sh.getValue());
                     System.out.println("time" + ": " + sh.getTime());
                     System.out.println("date" + ": " + sh.getDate());
                     }//whileAs you can see I tried casting to a string in ejbactivate, but that simply causes an Integer class cast exception during findByprimaryKey instead. How do I allow both Integer and String objects to be used?
    Also I am a bit confused as to why the String passed to findByShare(String) is being used in context.getPrimaryKey() in the first place (if that is actually what's happening).

    Oops my FindByShare method was returning a collection of shareId's (strings) instead of a collection of Integer primary keys, which would explain the class cast exception.

  • How to implement find methods in CMP?

    As OC4J does not support EJB-QL, we need to implement the find methods by ourselves. But how? Here is my thought.
    1) Still declare the find methods in EJB home, such as
    public Collection findBySponsor(String sponsorGuid);
    2) Do not add query part to ejb-jar.xml file;
    3) In the bean class, implement the find method using JDBC code.
    Does CMP allows explicit-implementation of finder methds?
    Does CMP allows explicit-call to JDBC code?
    Thanks,

    Henry -- Why go to that trouble? For the near term I would suggest that you just modify the generated
    orion-ejb-jar.xml descriptors which will include tags to allow you to either 1) enter a partial criteria or
    2) enter a complete SQL statement. This is much less work and when EJB-QL is available with the product,
    then you have to only add the EJB-QL to the ejb-jar.xml.
    Thanks -- Jeff

  • Rhino calling overloaded Java methods with Array parameters

    Has anyone had any problems writing JavaScript code that calls overloaded Java methods?
    I have two Java defined methods that differ in the arguments, one takes a string the other takes an array of strings. The problem is calling Java methods within the JavaScript always calls the method with the String argument...
    /* Java Code Here */
    public void function(String s) { /* Function A */ }
    public void function(String[] sa) { /* Function B */ }
    /* JavaScript  Code Here */
    param = java.lang.reflect.Array.newInstance(java.lang.String, 2);
    param[0] = "test";
    param[1] = "test2";
    stringParam = "test3";
    /* Both function calls below end up calling the Function A from above */
    function(param);
    function(stringParam);PS...in case you're not familiar with Rhino,
    It is a mozilla package that embeds a JavaScript interpreter within a Java application...
    http://www.mozilla.org/rhino/

    haha...I can't even find my other thread :(
    Sorry about the double post...I'll go look for my other thread now

  • Why there are overloaded create methods in Statful bean?

    Hi all,
    I have a question ...!
    Why there are overloaded create methods for Statefule beans? and why not for Stateless bean?
    because any way these create methods are for giving referneces of EJB objects.hence, what is use of overloaded methods in stateful bean?
    Thanks in advance.
    Regards,
    Rahul

    Hi Rahul,
    Each stateful session bean is tied to a particular client. That means whatever state is passed in during create() is guaranteed
    to be available on subsequent invocations. Allowing multiple create methods is a convenience.
    For stateless session beans there is no prescribed relationship between the caller and which bean instance is used to handle
    an invocation. It wouldn't make sense to allow creation parameters since there would be no guarantee that a subsequent
    invocation is handled by an instance containing that particular initialization state.
    All of this only applies to the EJB 2.1 and earlier API. Starting in EJB 3.0, there are no longer explicit create() methods.
    As you've seen there isn't any benefit to having them in the stateless case. For stateful session beans in EJB 3.0, the
    developer can perform initialization by just declaring a particular business method and calling that after first acquiring a
    new stateful session bean reference.
    --ken                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   

  • CMP Finder Method

    Could you supply a couple of examples of setting up a custom CMP Finder Method using both SQLJ and JDBC?
    In particular how is the SQL coded in the "SQL Query" textbox on the "Method" tab? How are the parameters and the result set referenced and returned? What is the return type?
    Simple Select / Where clause multirow and single row examples should suffice.
    I using JDeveloper 9.0.2.8.2.
    Thanks.

    You can create custom CMP Finder Methods which takes appropriate sql but not SQLJ and JDBC.
    i.e if you are adding a custom finder method in orion-ejb-jar.xml it takes only SQL not java code
    In JDeveloper select orion-ejb-jar.xml in the project and right-click on it and choose Settings option
    Select the Entity bean in the navigator and choose Finder methods
    Click on Add. The dialog box will allow to add a new finder method with SQL query
    Click on Help for specific information
    Couple of hints are
    Partial
    Whether or not the specified query is a partial one. A partial query is the 'where' clause or the 'order' (if it starts with order) clause of the SQL query.
    Queries are partial by default. If partial="false" is specified then the full query is to be entered as value for the query attribute and you need to make sure that the query produces a result-set containing all of the CMP fields. This is useful when doing advances queries involving table joins and similar.
    Query
    The query part of an SQL statement. This is the section following the WHERE keyword in the statement. Special tokens are $number which denotes an method argument number and $name which denotes a cmp-field name. For instance the query for "findByAge(int age)" would be (assuming the cmp-field is named 'age'): "$1 = $age".
    Return type can be collection if the query is returning more than one row of data or it could be the entity bean type itself (if it is only one row)
    raghu
    JDev Team

  • Not able to reload the data from DB using finder methods

    Hi all,
    <p>
    I am facing a weird problem while using finder methods.
    I am using weblogic 8.1 SP3 and entity beans are CMP with DB concurrency.DB is oracle
    </p>
    <h4>Problem Description</h4>
    <p>
    I am having one session bean which internally interacts with my entity beans,
    Now say my transaction is getting initiated in one of the session bean and I use some finder in it.
    </p>
    <p>
    To make the problem more clear lets say my entity bean is loanBean with loanId as primary key.
    Now say method A of session bean initiates the transaction and I use something like
    <br>
    LoanLocal loanLocal =loanLocalHome.findByLoanId(loanId);
    <br>
    <b>Note that I am not using findByPrimaryKey method</b>
    <br>
    now this method A calls some other method B on some session bean which is having Required as its transaction attribute.
    <br>
    But before the call of B some other thread or background process updates the DB for this loanId and commits,
    <br>
    now when I fire the same finder in method B I am still getting the old data, ie I am not getting the data which has been modified in DB and committed by some other thread, I still get the old data and when I tried to generate the SQL queries which weblogic is firing, I see
    it fires the SQL for every finder other that findByPrimaryKey.
    <br>
    <b>
    Now my problem is I am getting the old data only and I need the new updated data of DB. isolation-level of DB and beans is READCOMMITTED.
    Note:: I cant use new transaction to read the data.
    </b>
    <br>
    And I couldn't understand that when weblogic is firing query for every finder then why it should not refresh the data in its cache. Is there any way to disable this kind of caching and say that everytime when i use finder just go to DB and get me the last committed data.
    </p>
    <br>
    Any help in this regard would be very helpful to me.
    <br>
    Thanks and Regards
    <br>
    Manish Garg.
    </p>

    Hi,
    In my understanding, cache is not involved in this scenario. As you
    observed, the container fires sql every time when you invoke this finder.
    So, it should just give the result that it got from the DB. Is there a
    possibility that the DB is using repeatable_read or serializable for
    isolation level?
    You can debug further by doing couple of things -
    1. Instrument the code in the generated RDBMS java file for the entity bean
    (if you use -keepgenerated option for weblogic.ejbc, u can get the source of
    this file). This class will have the implementation for ejbFindByLoanId. You
    can just print the result set data after the query is fired.
    2. Try the same scenario without the ejb container. Like, write a jsp which
    will start a user tx and fire the query twice such that there is an update
    between the two queries. Note that, you need to use a TxDataSource to get
    the JDBC connection so that it will be tx aware.
    --Sathish
    <Manish Garg> wrote in message news:[email protected]...
    Hi all,
    <p>
    I am facing a weird problem while using finder methods.
    I am using weblogic 8.1 SP3 and entity beans are CMP with DB
    concurrency.DB is oracle
    </p>
    <h4>Problem Description</h4>
    <p>
    I am having one session bean which internally interacts with my entity
    beans,
    Now say my transaction is getting initiated in one of the session bean and
    I use some finder in it.
    </p>
    <p>
    To make the problem more clear lets say my entity bean is loanBean with
    loanId as primary key.
    Now say method A of session bean initiates the transaction and I use
    something like
    <br>
    LoanLocal loanLocal =loanLocalHome.findByLoanId(loanId);
    <br>
    <b>Note that I am not using findByPrimaryKey method</b>
    <br>
    now this method A calls some other method B on some session bean which is
    having Required as its transaction attribute.
    <br>
    But before the call of B some other thread or background process updates
    the DB for this loanId and commits,
    <br>
    now when I fire the same finder in method B I am still getting the old
    data, ie I am not getting the data which has been modified in DB and
    committed by some other thread, I still get the old data and when I tried
    to generate the SQL queries which weblogic is firing, I see
    it fires the SQL for every finder other that findByPrimaryKey.
    <br>
    <b>
    Now my problem is I am getting the old data only and I need the new
    updated data of DB. isolation-level of DB and beans is READCOMMITTED.
    Note:: I cant use new transaction to read the data.
    </b>
    <br>
    And I couldn't understand that when weblogic is firing query for every
    finder then why it should not refresh the data in its cache. Is there any
    way to disable this kind of caching and say that everytime when i use
    finder just go to DB and get me the last committed data.
    </p>
    <br>
    Any help in this regard would be very helpful to me.
    <br>
    Thanks and Regards
    <br>
    Manish Garg.
    </p>

  • How do I use the find method to find multiple items in a single paragraph?

    I am desigining a script to find any instances where ctrl+b and ctrl+i are applied to body text and then replace those character format overrides with Italic or Bold chartag.  Here's what the script is supposed to do:
    put the find method in a while loop that searches for character format overrides.
    If a character format override is found, pass the text range returned by the find method and the CharPropsChange flag to the GetTextForRange method.
    Use a boolean compare between the idata of the text item to the character angle and character weight constants.
    Whichever boolean evaluates to true, then use the SetTextProp method to set properties of the text range to the properties of the italic or bold character tag.
    This script does work on the first character format override found however it ignores any other overrides in the same paragraph. The cause of this is that the while loop updates the text loc that the find method uses to the next paragraph in flow. I suspect that i need to add an inner loop that goes through all the text in a single paragraph, where at teach iteration the text loc used by the find method is based on the same paragraph but the offset is modified. I am just not sure how to do that.
    function removeOverrides (pDoc)
        var vDocStart = pDoc.MainFlowInDoc.FirstTextFrameInFlow.FirstPgf;
        var vBoldFmt=getCharFmt (pDoc, 'Bold')
        var vItalicFmt=getCharFmt (pDoc, 'Italic')
        initFA_errno ();
        while (FA_errno==Constants.FE_Success)
            var vTextLoc = new TextLoc(vDocStart,0);
            var vFindParams=findOverrideParams (pDoc);
            var vTextRange=pDoc.Find(vTextLoc,vFindParams);
            if (vTextRange.beg.obj.ObjectValid())
                var vTextItems=pDoc.GetTextForRange (vTextRange, Constants.FTI_CharPropsChange)
                if (vTextItems.length==!0 )
                    if (vTextItems[0].idata==Constants.FTF_WEIGHT)
                       pDoc.SetTextProps (vTextRange, vBoldFmt.GetProps())
                    if (vTextItems[0].idata==Constants.FTF_ANGLE)
                       pDoc.SetTextProps (vTextRange, vItalicFmt.GetProps())
                    } else (Log (vLogFileName, '\nERROR: No items were found in the text format array but format override was found: '+pDoc.Name))
            vDocStart=vDocStart.NextPgfInFlow;
    function findOverrideParams (pDoc)
        var vFindParams = AllocatePropVals(1);
        vFindParams[0].propIdent.num = Constants.FS_FindObject;
        vFindParams[0].propVal.valType = Constants.FT_Integer;
        vFindParams[0].propVal.ival = Constants.FV_FindCharacterFormatOverride;
       return vFindParams;

    Hi Rick,
    Well, following up on the previous posting, I actually did figure out how to make it work but it seems rather inefficient. I can insert a new paragraph right after the paragraph that has the table anchor but when i cut the table, i also cut the paragraph i just created. So to get around that, I create two paragraphs, so that there will be one paragraph left after i do the cut and that is the paragraph that I paste the table into. Once the table is pasted into the new paragraph, I delete the other paragraph that I created.
    Here's the updated code from the for loop:
    var vTbl = vDoc.GetUniqueObject(Constants.FO_Tbl, vTextItems[i].obj.Unique);                 
    var vAnchorPgf=vDoc.NewSeriesPgf (vTbl.TextLoc.obj)      
    var vAnchorPgf2=vDoc.NewSeriesPgf (vAnchorPgf);        
    var vAnchorTextLoc=new TextLoc (vAnchorPgf2, 0);             
    var vTblTextRange=new TextRange ();        
    vTblTextRange.beg.obj=vTbl.TextLoc.obj;       
    vTblTextRange.beg.offset = vTbl.TextLoc.offset;        
    vTblTextRange.end.obj=vTbl.TextLoc.obj;        
    vTblTextRange.end.offset = Constants.FV_OBJ_END_OFFSET                 
    vDoc.TextSelection=vTblTextRange;        
    vDoc.Cut (0);                
    vTblTextRange.beg.obj=vAnchorTextLoc.obj;        
    vTblTextRange.beg.offset = 0;              
    vTblTextRange.end.obj=vAnchorTextLoc.obj;       
    vTblTextRange.end.offset =0;                 
    vDoc.TextSelection=vTblTextRange;       
    vDoc.Paste (0);                   
    vAnchorPgf2.Delete();        

  • How to add a finder method in the container manager Bean in the weblogic6.1

    in the environment jbuilder6 andweblogic6.1,use container manager entity Bean,it can automatic generate the findAll() method,I want to add a new method to find an element in the home interface,such as findByName(),name is a element of a table of the database.in the weblogic-cmp-rdbms-jar.xml,this is part of the fiile:
    <finder>
    <finder-name>findAll</finder-name>
    <finder-query><![CDATA[ (= 1 1) ]]></finder-query>
    </finder>
    <finder>
    <finder-name>findByName</finder-name>
    <finder-param>java.lang.String</finder-param>
    <finder-query><![CDATA[ (=name $name) ]]></finder-query>
    </finder>
    It can successfully compile the findAll(),but it is wrong when compile the findByName(),as follows
    "www.ejbgrpx": Method Name: findByName
    "www.ejbgrpx": Invalid specifications for a WebLogic RDBMS CMP EJB.
    "www.ejbgrpx": ERROR: Error from ejbc: weblogic.ejb20.cmp11.rdbms.finders.IllegalExpressionException:
    "www.ejbgrpx": While trying to process Finder
    "www.ejbgrpx": Parameter Types: (java.lang.String)
    "www.ejbgrpx": WebLogic Query: (= name $name)
    "www.ejbgrpx": Finder Expressions: ()
    "www.ejbgrpx": Could not parse WLQL expression: (= name $name) null
    "www.ejbgrpx": ERROR: ejbc found errors
    thank you

    The finder methods that you are referring to are only simple finder methods. If you would like to add specialized finder methods, you can make your entity bean with bean managed persistence and not container managed. If you are using EJB 2.0, your entity bean with container managed persistence can use EJB QL for finder methods. You can search for this topic and/or download the EJB 2.0 specifications
    Hope this helps

  • CMP Entity Bean with ejb-ql finder methods and INFORMIX database

    Hi,
    I have some CMP Entity Beans with finder methods defined in ejb-ql. In my ejb-jar, within <entity> definitions I have something like:
        <entity>
          <abstract-schema-name>BeanName</abstract-schema-name>
          <cmp-field><field-name>fieldOne</field-name></cmp-field>
          <cmp-field><field-name>fieldTwo</field-name></cmp-field>
          <query>
            <query-method>
              <method-name>findAll</method-name>
              <method-params></method-params>
            </query-method>
            <ejb-ql>SELECT OBJECT(o) FROM BeanName o</ejb-ql>
          </query>
        <entity>
    And in persistent.xml:
    <db-properties>
         <data-source-name>datasource_name</data-source-name>
    </db-properties>
    <entity-bean>
         <ejb-name>BeanName</ejb-name>
         <table-name>table_name</table-name>
         <field-map key-type="NoKey">
         <field-name>fieldOne</field-name>
         <column><column-name>column_one</column-name></column>
          </field-map>
         <field-map key-type="NoKey">
         <field-name>fieldTwo</field-name>
         <column><column-name>column_two</column-name></column>
          </field-map>
          <finder-descriptor>
              <method-name>findAll</method-name>
              <method-params/>
         </finder-descriptor>
    Once deployed, on server side, I can found a java source file (with corresponding compiled class file) in path:
    j2ee/cluster/server0/apps/companyName/MyEARApp/EJBContainer/temp/temp38837373733/route/to/package/
    with names:
    BeanName0_0pm.java
    BeanName0_0PM.class
    and the generated java file contains this code:
      public java.util.Enumeration ejbFindAll() throws javax.ejb.FinderException, javax.ejb.EJBException  {
        TransactionContext tc = pm.getTransactionContext();
        Connection conn = null;
        PreparedStatement pSt = null;
        ResultSet ejb_rs = null;
        int status = javax.transaction.xa.XAResource.TMSUCCESS;
        try {
          conn = pm.getConnectionForFindMethod();
          pSt = conn.prepareStatement("SELECT \"O\".\"COLUMN_ONE\",\"O\".\"COLUMN_TWO\", FROM \"TABLE_NAME\" \"O\"");
          ejb_rs = pSt.executeQuery();
    I'm trying to call this method but it throws a SQLException when preparing the statement.
    It seems that Informix does not like this SQL syntax because of upper case names, doble quotes on table alias, or something else.
    When editing persistent.xml in netweaver, I can define the element <datasource-vendor> as ORACLE, SAPDB, MS_SQL_SERVER, DB2_UDB_AS400 or DB2_UDB_OS390 but INFORMIX is not an accepted value.
    Is there any way to define how this SQL query is build?
    Thanks in advance.

    The return type of the finder method defined in the remote home interface is either the entity bean's remote interface or a collection of objects implementing the entity bean's remote interface. The return type of the finder method defined in the local home interface is either the entity bean's local interface or a collection of objects implementing the entity bean's local interface

  • More than one entity found for a single-object find method

    Hi everyone...
    I have this error when my webservice is running..I don't know what it means and what would be the best solution..
    <pns:message>More than one entity found for a single-object find method.</pns:message>
    it throws an Exception..
    Thanks!

    = More than one row found in a DB with the "unique" key supplied...
    Your method is returning an object where it should return a collection ?
    Enjoy

  • Finder method in container-managed entity bean

    Finder method of a container entity bean is taking the primary key class object of another entity bean. How to map this in the xml descriptor file weblogic-cmp-rdbms.xml for this type of beans.
    I am trying to deploy the jasmine computer store of Mastering EJB by EdRoman.
    I couldn't write the deployment file weblogic-cmp-rdbms.xml for Order Entity bean which uses CustomerPK as an argument in its finder method.
    Please tell me how to write this. I am trying on weblogic 5.1
    Thanx in advance
    Srivatsa

    hello,
    in container managed persistence, you specify on your xml file the name of your table. so the primary key you want to use have to be a foreign key in your table. otherwise i don't think that you can use a container managed persistence.
    Najib.

  • Using wildcards in custom find methods with CMP beans

    Hi,
    I'd like to create a custom find method called findByName which accepts a string. I'd typically want to use the string in a '%<name>%' scenario, where the user needn't type in the whole name. Does anybody know what the partial query should look like? I'm not sure how to concatenate the '%' symbol to the string taken in.
    Thanks in advance
    Gillian

    Gillian-
    Bind variables are of the form $1, $2, etc., so try using a query stmt like this:
    select * from YOURTABLE where name like '%$1%'
    Regards,
    -Jon

  • Problem when creating CAF Entity Service finder Methods

    Guys,
    Can any one please suggest me appropriatly to the below problem.
    I am using NWDS 7.06. I have no problem when creating CAF project, Application Service and Entity Service even.
    But in the Entity Service:
    1. Add a string or longtext attribute.
    2. try to create a custom finder method in operations tab, during that operation i am  not finding the attribute which i have created in step1.
    That means i am not able to create the my own finder methods with parameters.
    I was able to do that in some version long ago but i have forgotten that NWDS version.
    summary of Problem Is: " Cannot create custom methods with custom parameters in Entity Service"
    Can you please suggest me the right version or a solution to this problem on urgent basis please.
    I promise you that i will give you full points to you who ever gives me the right solution.
    Please mail your suggestions to [email protected]

    Guys,
    I have solved the problem successfully. Thanks for your attention.

  • Collection returned by finder methods

    Collection returned by finder methods are serialized to the clients or referenced?
    When a client access a EJB and invoke each finder method, the result back to the client is a collection (for every finder methods unless the findByPrimaryKey). This collection is serialized to the client o is accessed by the client from the container remotely?

    I guess it is serialized. The EJB works on the rmi logic.

Maybe you are looking for

  • How to set background color in row of JTable ?

    i am new in java please tell me about How to set background color in row of JTable ? please example code. Thnak you.

  • Can I upgrade to Mac Lion for free again?

    Hi I bought my Macbook Pro in June 2011, and beacse I bought it between a certian timeframe, I was able to upgrade to OS X lion for free from the app store durring a promo or something. All I had to do was put in my Mac serial number to confirm it wa

  • FB70  how to modify  the Reference field

    Dear experts, In FB70  Customer Invoice entry, If I want to put several Invoice reference in the Reference field  for tracking of  Agents Commission,  Is any report generation possible for Sales Commission Thanks Mdas

  • Skype 5.5 sucks

    I have just got the skype 5.5 update and it sucks as it doesn't solve most of the critical issues but this doesn't means that the links preview and easy sign in is n't a good improvment but it is adding LESS IPRORTANT FEATURES AND NEGLECTING THE CUST

  • SDN BCS Mentor's steep personnel comments for technical questions..

    Please read the thread and let us know if this is the sort of attitude, SDN BCS mentor should continue in the forum.. /thread/844980 [original link is broken] ECC reported results When we are literally looking for technical help, we write in the foru