SetWhereClause of ViewObject

Hi,
I am setting ViewObject's where clause by using setWhereClause(strWhereClause).
strWhereClause is of sort ATTRIBUTE_ID  IN  (42912850, 42302602, 43326003, 43582985, 43582465, 43474749......)
But number of elements in IN clause are greater than 1000 and I don't want to use OR.
So I am thinking to use it as ATTRIBUTE_ID  IN (SELECT * FROM TABLE(CAST(m_AttributeIDList AS NUMBERLIST))) where NUMBERLIST is defined as
CREATE TYPE NumberList AS TABLE OF NUMBER;
Can anyone please help me on this, what code should be written in java front end side and what functions or procedure should be written in oracle to achieve this and how should I call it from java.
Thanks.

Hi,
Check this out : https://blogs.oracle.com/aramamoo/entry/passing_comma_separated_string_as
-Arun

Similar Messages

  • OAF, View object used with the clausule setWhereClause, show the error  not have been properly initialized.

    Hi to all,
    I'm new with oaf and in mi AM i have to VO that I use to find relative information to the one is shown to the user on a query region, after the user pressed the go buton  the CO request the AM tho load both VO and those information are used to show in a popup region to display and update. the main problem is when the popup region closes it send a submit to the server an the error "View object may not have been properly initialized during Update." is displayed
    The main page and the popup uses the same AM, the initM2mVo() and initTavleVo() are  called by the CO at the processRequest of the main PG, the popup dosen´t have a CO.
    This the AM that uses the main PG and the popup region
    package tasc.oracle.apps.tasc.m2m.imei.server;
    import oracle.apps.fnd.framework.OAViewObject;
    import oracle.apps.fnd.framework.server.OAApplicationModuleImpl;
    import oracle.apps.fnd.framework.server.OAViewObjectImpl;
    import oracle.jbo.Row;
    import oracle.jbo.ViewObject;
    // ---    File generated by Oracle ADF Business Components Design Time.
    // ---    Custom code may be added to this class.
    // ---    Warning: Do not modify method signatures of generated methods.
    public class ActualizarImeiAMImpl extends OAApplicationModuleImpl {
        /**This is the default constructor (do not remove)
        public ActualizarImeiAMImpl() {
        /*******************************USE FOR CUSTOM CODE****************************/
         * Inicializa el vo a través del cual se ejecutara la actualización del IMEI.
         * @param taskNumber
        public void loadImeiVo(String taskNumber) {
            OAViewObject voTableQry = getTableQryVO1();
            if (voTableQry != null) {
                voTableQry.reset();
                voTableQry.setWhereClause(null);
                voTableQry.setWhereClauseParams(null);
                voTableQry.setWhereClause("TASK_NUMBER = :1");
                voTableQry.setWhereClauseParam(0, taskNumber);
                voTableQry.executeQuery();
                if (voTableQry.hasNext()) {
                    voTableQry.next();
                    String idActuacion =
                        (String)voTableQry.getCurrentRow().getAttribute("IdActuacion");
                    String dsM2m =
                        (String)voTableQry.getCurrentRow().getAttribute("DsM2m");
                    String imei =
                        (String)voTableQry.getCurrentRow().getAttribute("Imei");
                    if (idActuacion != null) {
                        OAViewObjectImpl m2mVo = (OAViewObjectImpl)this.getTascTransEqInstM2mVO1();
                        m2mVo.reset();
                        if (!m2mVo.isPreparedForExecution()) {
                            m2mVo.setMaxFetchSize(0);
                            m2mVo.executeQuery();
                        m2mVo.setWhereClause(null);
                        m2mVo.setWhereClauseParams(null);
                        m2mVo.setWhereClause("ID_ACTUACION = :1 AND DS_M2M = :2 AND IMEI = :3 ");
                        m2mVo.setWhereClauseParam(0, idActuacion);
                        m2mVo.setWhereClauseParam(1, dsM2m);
                        m2mVo.setWhereClauseParam(2, imei);
                        m2mVo.executeQuery();
                        if(m2mVo.hasNext()){
                            m2mVo.next();
         * Carga los valores disponibles de IMEI según el taskNumber al cual pertenezca
         * el  IMEI seleccionado.
        public void loadImeiValuesList(String taskNumber) {
            ViewObject viewobject = this.getImeiListVO1();
            OAViewObject voTableQry = getTableQryVO1();
            if (voTableQry != null && voTableQry.getCurrentRow() != null) {
                String imeiType =
                    (String)voTableQry.getCurrentRow().getAttribute("Attribute17");
                if (viewobject != null & imeiType != null) {
                    viewobject.setWhereClause(null);
                    viewobject.setWhereClauseParams(null);
                    viewobject.setWhereClause("TASK_NUMBER = :1 AND ATTRIBUTE17 = :2");
                    viewobject.setWhereClauseParam(0, taskNumber);
                    viewobject.setWhereClauseParam(1, imeiType);
                    viewobject.executeQuery();
        /*******************************USE FOR CUSTOM CODE****************************/
        /**Container's getter for TableVO1
        public OAViewObjectImpl getTableVO1() {
            return (OAViewObjectImpl)findViewObject("TableVO1");
        /**Sample main for debugging Business Components code using the tester.
        public static void main(String[] args) { /* package name */
            /* Configuration Name */launchTester("tasc.oracle.apps.tasc.m2m.imei.server",
                                                 "ActualizarImeiAMLocal");
        /**Container's getter for TascTransEqInstM2mVO1
        public OAViewObjectImpl getTascTransEqInstM2mVO1() {
            return (OAViewObjectImpl)findViewObject("TascTransEqInstM2mVO1");
        /**Container's getter for ImeiListVO1
        public OAViewObjectImpl getImeiListVO1() {
            return (OAViewObjectImpl)findViewObject("ImeiListVO1");
        /**Container's getter for TableQryVO1
        public OAViewObjectImpl getTableQryVO1() {
            return (OAViewObjectImpl)findViewObject("TableQryVO1");
    this is the CO of the main PG
    /*===========================================================================+
    |   Copyright (c) 2001, 2005 Oracle Corporation, Redwood Shores, CA, USA    |
    |                         All rights reserved.                              |
    +===========================================================================+
    |  HISTORY                                                                  |
    +===========================================================================*/
    package tasc.oracle.apps.tasc.m2m.imei.webui;
    import java.io.Serializable;
    import oracle.apps.fnd.common.VersionInfo;
    import oracle.apps.fnd.framework.OAApplicationModule;
    import oracle.apps.fnd.framework.webui.OAControllerImpl;
    import oracle.apps.fnd.framework.webui.OAPageContext;
    import oracle.apps.fnd.framework.webui.TransactionUnitHelper;
    import oracle.apps.fnd.framework.webui.beans.OAWebBean;
    import oracle.apps.fnd.framework.webui.beans.layout.OAQueryBean;
    * Controller for ...
    public class ActualizarImeiCO extends OAControllerImpl {
        public static final String RCS_ID = "$Header$";
        public static final boolean RCS_ID_RECORDED =
            VersionInfo.recordClassVersion(RCS_ID, "%packagename%");
         * Layout and page setup logic for a region.
         * @param pageContext the current OA page context
         * @param webBean the web bean corresponding to the region
        public void processRequest(OAPageContext pageContext, OAWebBean webBean) {
            super.processRequest(pageContext, webBean);
            //get the handle to AM Attached to our Simple Page Region MainRegionRN
            //The page is passed as parameter to this method, hence we can get handle
            //to the AM quite easily
            OAApplicationModule am = pageContext.getApplicationModule(webBean);
            //verifica si la transaccion de creacion esta activa todavia
            if (TransactionUnitHelper.isTransactionUnitInProgress(pageContext,"ActualizarImeiM2m", false))
                // deshace cambios y finaliza Txn
                am.invokeMethod("rollback");
                TransactionUnitHelper.endTransactionUnit(pageContext, "ActualizarImeiM2m");
         * Procedure to handle form submissions for form elements in
         * a region.
         * @param pageContext the current OA page context
         * @param webBean the web bean corresponding to the region
        public void processFormRequest(OAPageContext pageContext,
                                       OAWebBean webBean) {
            super.processFormRequest(pageContext, webBean);
            //get the handle to AM Attached to our Simple Page Region MainRegionRN
            //The page is passed as parameter to this method, hence we can get handle
            //to the AM quite easily
            OAApplicationModule am = pageContext.getApplicationModule(webBean);
            //Detección del botón go de la región de query.
            this.queryButonGO(pageContext, webBean, am);
            this.updateImei(pageContext, am);
         * Detección del botón go de la región de query
         * @param pageContext
         * @param webBean
         * @param am
        public void queryButonGO(OAPageContext pageContext, OAWebBean webBean,
                                 OAApplicationModule am) {
            OAQueryBean queryBean =
                (OAQueryBean)webBean.findIndexedChildRecursive("QueryRN");
            String idGo = queryBean.getGoButtonName();
            if (pageContext.getParameter(idGo) != null) {
                String tareaId = pageContext.getParameter("TaskNumberLovInput");
                //Inicializa el vo a través del cual se ejecutara la actualización del IMEI.
                Serializable[] parameters2 = { tareaId };
                Class[] paramTypes2 = { String.class };
                am.invokeMethod("loadImeiVo", parameters2, paramTypes2);
                //Carga los valores disponibles de IMEI según el taskNumber al cual pertenezca  el  IMEI seleccionado.
                Serializable[] parameters = { tareaId };
                Class[] paramTypes = { String.class };
                am.invokeMethod("loadImeiValuesList", parameters, paramTypes);
        public void updateImei(OAPageContext pageContext, OAApplicationModule am){
            if (pageContext.getParameter("ActualizarImei") != null){
                String imei = pageContext.getParameter("ImeiPopup");
                //TODO......
    thanks to all.

    I thing I got the problem.
    I have the following configuration:
    One Main Page and external RN that is call as popup in main page
    2 VO, queries by java code, one to capture some information that is used to query the 2 VO that I use to update information by the popup.
    One AM that is map only in the Main Page. (Initially I had the external RN mapped to same AM as the main PG, but I remove it).
    The solution was remove the mapping of the AM from the external region and in the messageimput of the external region set the View instance and view Attribute manually in this fields (http://screencast.com/t/uDTALEedCh do not use the wizard ) as the one instanced am the AM, so the problem it seem that was that defining an AM to the external region create a new instance, causing that it can not see the information that I load manually in the VO by query it them.
    for this case there is not need to use the next code, because the Rows are load with information by the query in the java code, this only will have to be made when inserting a new row .
        public void initM2mVo(){
            //get a handle to the View Object that we wish to initialize
            OAViewObject vo = (OAViewObject)this.getTascTransEqInstM2mVO1();
            if (!vo.isPreparedForExecution()) {
                vo.setMaxFetchSize(0);
                vo.executeQuery();
            //Create a blank Row
            Row row = vo.createRow();
            //Attach that blank row to the VO. Data will be fed into this row, when the user types into the fields
            vo.insertRow(row);
            //Set the status of the blank row to initialized. This tells OA Framework that record is blank and must not be included in DML
            //Operations until    changes are made to its underlying VO [via screen fields]
            row.setNewRowState(Row.STATUS_INITIALIZED);

  • ViewObject.setWhereClause() strangeness.

    I've had an interesting problem when using ViewObjects:
    A JSP page uses a ViewObject, and sets the where clause as follows:
    view.setWhereClause("Vendorid = :0");
    view.setWhereClauseParam(0,anId);
    view.executeQuery();
    The query executes just fine. A subsequent JSP page uses the same ViewObject, and sets the where clause as follows:
    view.setWhereClause("Id = :0");
    view.setWhereClauseParam(0,anId);
    view.executeQuery();
    The problem occurs on the second use of the ViewObject: the row is not found! Upon investigation (Using Diagnostic.properties) I discovered that remenants of the where clause from the first use of the ViewObject remain. The query that actually gets executed is as follows:
    [169] jbo.server(int) SELECT Ricscontent.ID, Ricscontent.PARENTID, Ricscontent.VENDORID, ...cut... FROM RICSCONTENT Ricscontent WHERE (Id = :0) AND Ricscontent.VENDORID = :1
    As you can see, the where clause includes the Vendorid. When executing the second query first, it works just fine.
    Am I doing something wrong, or is this a defect? Is there a work-around to this problem? Any help would be greatly appreciated.
    Thanks,
    David
    I've included the diagnostic log below:
    "C:\Program Files\Oracle\JDeveloper 3.1\java1.2\jre\bin\javaw.exe" -mx50m -classpath "O:\\_pages;O:\;C:\Program Files\Oracle\JDeveloper 3.1\lib\webtogo.jar;C:\Program Files\Oracle\JDeveloper 3.1\lib\xmlparser.jar;C:\Program Files\Oracle\JDeveloper 3.1\lib\jdev-rt.zip;C:\Program Files\Oracle\JDeveloper 3.1\lib\jbcl2.0.zip;C:\Program Files\Oracle\JDeveloper 3.1\lib\jdev-rt.zip;C:\Program Files\Oracle\JDeveloper 3.1\lib\connectionmanager.zip;C:\Program Files\Oracle\JDeveloper 3.1\lib\jbohtml.zip;C:\Program Files\Oracle\JDeveloper 3.1\lib\jbojdbcpatch.zip;C:\Program Files\Oracle\JDeveloper 3.1\jdbc\lib\oracle8.1.6\classes12.zip;C:\Program Files\Oracle\JDeveloper 3.1\lib\jbomt.zip;C:\Program Files\Oracle\JDeveloper 3.1\lib\jboorasql.zip;C:\Program Files\Oracle\JDeveloper 3.1\lib\jboremote.zip;C:\Program Files\Oracle\JDeveloper 3.1\lib\jndi.jar;C:\Program Files\Oracle\JDeveloper 3.1\lib\xmlparserv2.jar;C:\Program Files\Oracle\JDeveloper 3.1\lib\ojsp.jar;C:\Program Files\Oracle\JDeveloper 3.1\lib\ojc.jar;C:\Program Files\Oracle\JDeveloper 3.1\jswdk-1.0.1\lib\servlet.jar;C:\Program Files\Oracle\JDeveloper 3.1\java1.2\jre\lib\rt.jar" oracle.jdeveloper.debugger.ServletMain \RICSJsp_html\RICSFindVendor.jsp "L:\htmlroot" "C:\Program Files\Oracle\JDeveloper 3.1\lib"
    log3: oracle.jsp.JspServlet: init
    log3: Loading from CLASSPATH com_luxurydomain_rics_dal_DalModule.properties
    log3: Diagnostics: Routing diagnostics to standard output (use -Djbo.debugoutput=silent to remove)
    [00] oracle.jbo(init) Diagnostic Properties: Timing:false Functions:true Linecount:true Threshold:6log3:
    [01] JboInitialContextFactory.getInitialContext(Hashtable) BC4JDeployPlatform: LOCALlog3:
    [02] PropertyManager.loadProperties(Hashtable) {{ begin Loading BC4J properties
    log3:
    [03] PropertyManager.loadProperties(Hashtable) -----------------------------------------------------------log3:
    [04] util.Properties,(Properties) BC4J Property DeployPlatform='LOCAL' -->(SessionImpl) from Client Environmentlog3:
    [05] util.Properties,(Properties) BC4J Property ConnectionMode='0' -->(SessionImpl) from System Defaultlog3:
    [06] util.Properties,(Properties) BC4J Property jbo.fetch.mode='AS.NEEDED' -->(MetaObjectManager) from System Defaultlog3:
    [07] util.Properties,(Properties) Skipping empty Property JBODynamicObjectsPackage from System Defaultlog3:
    [08] util.Properties,(Properties) BC4J Property MetaObjectContextFactory='oracle.jbo.server.xml.DefaultMomContextFactory' -->(MetaObjectManager) from /oracle/jbo/server/jboserver.properties resourcelog3:
    [09] util.Properties,(Properties) BC4J Property java.naming.factory.initial='oracle.jbo.common.JboInitialContextFactory' -->(MetaObjectManager) from Client Environmentlog3:
    [10] util.Properties,(Properties) BC4J Property MetaObjectContext='oracle.jbo.server.xm l.XMLContextImpl' -->(MetaObjectManager) from /oracle/jbo/server/jboserver.properties resourcelog3:
    [11] util.Properties,(Properties) BC4J Property IsLazyLoadingTrue='true' -->(MetaObjectManager) from /oracle/jbo/server/jboserver.properties resource
    log3:
    [12] util.Properties,(Properties) BC4J Property ActivateSharedDataHandle='false' -->(MetaObjectManager) from System Defaultlog3:
    [13] util.Properties,(Properties) Skipping empty Property HandleName from System Defaultlog3:
    [14] util.Properties,(Properties) Skipping empty Property Factory-Substitution-List from System Defaultlog3:
    [15] util.Properties,(Properties) Skipping empty Property jbo.project from System Defaultlog3:
    [16] util.Properties,(Properties) BC4J Property jbo.max.cursors='50' -->(MetaObjectManager) from System Defaultlog3:
    [17] util.Properties,(Properties) BC4J Property jbo.assoc.consistent='true' -->(MetaObjectManager) from System Defaultlog3:
    [18] util.Properties,(Properties) BC4J Property jbo.default.language='en' -->(MetaObjectManager) from System Defaultlog3:
    [19] util.Properties,(Properties) BC4J Property jbo.default.country='US' -->(MetaObjectManager) from System Defaultlog3:
    [20] util.Properties,(Properties) BC4J Property jbo.SQLBuilder='Oracle' -->(MetaObjectManager) from /oracle/jbo/server/jboserver.properties resourcelog3:
    [21] util.Properties,(Properties) BC4J Property jbo.jdbc.trace='false' -->(MetaObjectManager) from System Defaultlog3:
    [22] util.Properties,(Properties) BC4J Property jbo.debug.prefix='DBG' -->(Diagnostic) from /oracle/jbo/common/Diagnostic.properties resourcelog3:
    [23] util.Properties,(Properties) BC4J Property jbo.debugoutput='console' -->(Diagnostic) from /oracle/jbo/common/Diagnostic.properties resourcelog3:
    [24] util.Properties,(Properties) BC4J Property jbo.logging.show.timing='false' -->(Diagnostic) from /oracle/jbo/common/Diagnostic.properties resourcelog3:
    [25] util.Properties,(Properties) BC4J Property jbo.logging.show.function='true' -->(Diagnostic) from /oracle/jbo/common/Diagnostic.properties resourcelog3:
    [26] util.Properties,(Properties) BC4J Property jbo.logging.show.level='false' -->(Diagnostic) from /oracle/jbo/common/Diagnostic.properties resourcelog3:
    [27] util.Properties,(Properties) BC4J Property jbo.logging.show.linecount='true' -->(Diagnostic) from /oracle/jbo/common/Diagnostic.properties resourcelog3:
    [28] util.Properties,(Properties) BC4J Property jbo.logging.trace.threshold='6' -->(Diagnostic) from /oracle/jbo/common/Diagnostic.properties resourcelog3:
    [29] util.Properties,(Properties) BC4J Property jbo.jdbc.driver.verbose='false' -->(Diagnostic) from System Default
    log3:
    log3: Diagnostics: Routing diagnostics to standard output (use -Djbo.debugoutput=silent to remove)
    [30] oracle.jbo(init) Diagnostic Properties: Timing:false Functions:true Linecount:true Threshold:6log3:
    [31] util.Properties,(String) WARNING: Unused property: LC='Calling Function' found in /oracle/jbo/common/Diagnostic.properties resourcelog3:
    [32] PropertyManager.loadProperties(Hashtable) {{ finished loading BC4J properties log3:
    [33] PropertyManager.loadProperties(Hashtable) -----------------------------------------------------------log3:
    [34] oracle.jbo(reportVMProperties) JavaVMVersion: 1.2.280 odvlog3:
    [35] oracle.jbo(reportVMProperties) JavaVMVendor: Oracle Corp.log3:
    [36] oracle.jbo(reportVMProperties) JavaVMName: OJVM VMlog3:
    [37] oracle.jbo(reportVMProperties) OperatingSystemName: Windows NTlog3:
    [38] oracle.jbo(reportVMProperties) OperatingSystemVersion: 5.0log3:
    [39] oracle.jbo(reportVMProperties) OperatingSystemUsername: dgreenlog3:
    [40] oracle.jbo(boolean) Loading from /com/luxurydomain/rics/dal/dal.xml file
    log3:
    [41] oracle.jbo(boolean) Loading from /com/luxurydomain/rics/dal/DalModule.xml file
    log3:
    [42] oracle.jbo(boolean) Loading from /com/luxurydomain/rics/dal/RicsannotationView.xml file
    log3:
    [43] oracle.jbo(<init>) ViewObject Impl's default fetch mode = 0log3:
    [44] oracle.jbo(boolean) Loading from /com/luxurydomain/rics/dal/Ricsannotation.xml file
    log3:
    [45] oracle.jbo(getInterface) Reached getInterface
    log3:
    [46] oracle.jbo(getInterface) Oracle SQL Builder Version 3.0.0.0.0log3:
    [47] oracle.jbo(populateJboTypeMapEntries) OracleSQLBuilder: populating ORACLE TypeMap entrieslog3:
    [48] jbo.server(<clinit>) UtilMessageBundle (language base) being initialized
    log3:
    [49] Locale,.java(boolean) Stringmanager using default locale: 'null'log3:
    [50] oracle.jbo(boolean) Loading from /com/luxurydomain/rics/dal/RicscategoryView.xml file
    log3:
    [51] oracle.jbo(boolean) Loading from /com/luxurydomain/rics/dal/Ricscategory.xml file
    log3:
    [52] oracle.jbo(boolean) Loading from /com/luxurydomain/rics/dal/RicscontentView.xml file
    log3:
    [53] oracle.jbo(boolean) Loading from /com/luxurydomain/rics/dal/Ricscontent.xml file
    log3:
    [54] oracle.jbo(boolean) Loading from /com/luxurydomain/rics/dal/RicscontentcategoryView.xml file
    log3:
    [55] oracle.jbo(boolean) Loading from /com/luxurydomain/rics/dal/Ricscontentcategory.xml file
    log3:
    [56] oracle.jbo(boolean) Loading from /com/luxurydomain/rics/dal/RicsratingView.xml file
    log3:
    [57] oracle.jbo(boolean) Loading from /com/luxurydomain/rics/dal/Ricsrating.xml file
    log3:
    [58] oracle.jbo(boolean) Loading from /com/luxurydomain/rics/dal/RicsthemesView.xml file
    log3:
    [59] oracle.jbo(boolean) Loading from /com/luxurydomain/rics/dal/Ricsthemes.xml file
    log3:
    [60] oracle.jbo(boolean) Loading from /com/luxurydomain/rics/dal/RicsurlView.xml file
    log3:
    [61] oracle.jbo(boolean) Loading from /com/luxurydomain/rics/dal/Ricsurl.xml file
    log3:
    [62] oracle.jbo(boolean) Loading from /com/luxurydomain/rics/dal/RicsvendorView.xml file
    log3:
    [63] oracle.jbo(boolean) Loading from /com/luxurydomain/rics/dal/Ricsvendor.xml file
    log3:
    [64] oracle.jbo(boolean) Loading from /com/luxurydomain/rics/dal/SysC001386Link.xml file
    log3:
    [65] oracle.jbo(boolean) Loading from /com/luxurydomain/rics/dal/SysC001386Assoc.xml file
    log3:
    [66] oracle.jbo(boolean) Loading from /com/luxurydomain/rics/dal/SysC001383Link.xml file
    log3:
    [67] oracle.jbo(boolean) Loading from /com/luxurydomain/rics/dal/SysC001383Assoc.xml file
    log3:
    [68] oracle.jbo(boolean) Loading from /com/luxurydomain/rics/dal/SysC001368Link.xml file
    log3:
    [69] oracle.jbo(boolean) Loading from /com/luxurydomain/rics/dal/SysC001368Assoc.xml file
    log3:
    [70] oracle.jbo(boolean) Loading from /com/luxurydomain/rics/dal/SysC001370Link.xml file
    log3:
    [71] oracle.jbo(boolean) Loading from /com/luxurydomain/rics/dal/SysC001370Assoc.xml file
    log3:
    [72] oracle.jbo(boolean) Loading from /com/luxurydomain/rics/dal/SysC001371Link.xml file
    log3:
    [73] oracle.jbo(boolean) Loading from /com/luxurydomain/rics/dal/SysC001371Assoc.xml file
    log3:
    [74] oracle.jbo(boolean) Loading from /com/luxurydomain/rics/dal/SysC001390Link.xml file
    log3:
    [75] oracle.jbo(boolean) Loading from /com/luxurydomain/rics/dal/SysC001390Assoc.xml file
    log3:
    [76] oracle.jbo(boolean) Loading from /com/luxurydomain/rics/dal/SysC001391Link.xml file
    log3:
    [77] oracle.jbo(boolean) Loading from /com/luxurydomain/rics/dal/SysC001391Assoc.xml file
    log3:
    [78] oracle.jbo(boolean) Loading from /com/luxurydomain/rics/dal/SysC001379Link.xml file
    log3:
    [79] oracle.jbo(boolean) Loading from /com/luxurydomain/rics/dal/SysC001379Assoc.xml file
    log3:
    [80] oracle.jbo(boolean) Loading from /com/luxurydomain/rics/dal/SysC001374Link.xml file
    log3:
    [81] oracle.jbo(boolean) Loading from /com/luxurydomain/rics/dal/SysC001374Assoc.xml file
    log3:
    [82] oracle.jbo(boolean) Loading from /com/luxurydomain/rics/dal/SysC001375Link.xml file
    log3:
    [83] oracle.jbo(boolean) Loading from /com/luxurydomain/rics/dal/SysC001375Assoc.xml file
    log3:
    [84] oracle.jbo(boolean) Loading from /com/luxurydomain/rics/dal/SysC001369Link.xml file
    log3:
    [85] oracle.jbo(boolean) Loading from /com/luxurydomain/rics/dal/SysC0013 69Assoc.xml file
    log3:
    [86] lang.String,(Session) Created root application module: 'com.luxurydomain.rics.dal.DalModule'log3:
    [87] lang.String,(Session) Locale is: 'en_US'
    log3:
    [88] oracle.jbo(create) Connected to Oracle JBO Server - Version: 3.1.6.81.0log3:
    [89] oracle.jbo(loadImpl) Using DatabaseTransactionFactory implementation oracle.jbo.server.DatabaseTransactionFactorylog3:
    [90] oracle.jbo(initTransaction) DBTransactionImpl Max Cursors is 50log3:
    [91] oracle.jbo(doRegisterDefaultDriver) OracleSQLBuilder: Registered Oracle JDBC driverlog3:
    [92] oracle.jbo(initTransaction) Trying connection/1: url='jdbc:oracle:thin:RICS/riCs236@localhost:1521:DEVELOP4'...log3:
    [93] oracle.jbo(initTransaction) Successfully logged in
    log3:
    [94] oracle.jbo(initTransaction) JDBCDriverVersion: 8.1.6.0.0
    log3:
    [95] oracle.jbo(initTransaction) DatabaseProductName: Oraclelog3:
    [96] oracle.jbo(initTransaction) DatabaseProductVersion: Oracle8i Enterprise Edition Release 8.1.6.0.0 - Production With the Partitioning option JServer Release 8.1.6.0.0 - Productionlog3:
    [97] oracle.jbo(getDefaultMode) EntityRowSetImpl's jbo.assoc.consistent = true (1)
    log3:
    [98] oracle.jbo(createColumnList) Column count: 12log3:
    [99] jbo.server(int) ViewObject: RicsvendorView Query Statement: log3:
    [100] jbo.server(int) SELECT Ricsvendor.ID, Ricsvendor.VENDORNAME, Ricsvendor.ADDRESS1, Ricsvendor.ADDRESS2, Ricsvendor.CITY, Ricsvendor.STATE, Ricsvendor.COUNTRY, Ricsvendor.ZIP, Ricsvendor.DESCRIPTION, Ricsvendor.KEYWORDS, Ricsvendor.NOTES FROM RICSVENDOR Ricsvendor WHERE (Ricsvendor.ID IS NOT NULL )log3:
    [101] executeQuery.java(int) QueryCollection: Created new QUERY statementlog3:
    [102] afterRollback.oracle(TransactionEvent) RicsvendorView notify ROLLBACK ...
    log3:
    [103] oracle.jbo(clearQueryCollectionCache) Clear QueryCollection in cache...log3:
    [104] oracle.jbo(createColumnList) Column count: 12log3:
    [105] jbo.server(int) ViewObject: RicsvendorView Query Statement: log3:
    [106] jbo.server(int) SELECT Ricsvendor.ID, Ricsvendor.VENDORNAME, Ricsvendor.ADDRESS1, Ricsvendor.ADDRESS2, Ricsvendor.CITY, Ricsvendor.STATE, Ricsvendor.COUNTRY, Ricsvendor.ZIP, Ricsvendor.DESCRIPTION, Ricsvendor.KEYWORDS, Ricsvendor.NOTES FROM RICSVENDOR Ricsvendor WHERE (Ricsvendor.ID IS NOT NULL )
    log3:
    [107] executeQuery.java(int) QueryCollection: Created new QUERY statementlog3:
    [108] afterRollback.oracle(TransactionEvent) Ricscontent_SysC001369Assoc_RicscontentView notify ROLLBACK ... log3:
    [109] oracle.jbo(clearQueryCollectionCache) Clear QueryCollection in cache...
    log3:
    [110] oracle.jbo(createColumnList) Column count: 17log3:
    [111] jbo.server(int) ViewObject: Ricscontent_SysC001369Assoc_RicscontentView Query Statement: log3:
    [112] jbo.server(int) SELECT Ricscontent.ID, Ricscontent.PARENTID, Ricscontent.VENDORID, Ricscontent.CONTENTTYPE, Ricscontent.TITLE, Ricscontent.DESCRIPTION, Ricscontent.KEYWORDS, Ricscontent.PREVVERSION, Ricscontent.NEXTVERSION, Ricscontent.SUBMITTEDBY FROM RICSCONTENT Ricscontent WHERE (Ricscontent.VENDORID = :1)log3:
    [113] executeQuery.java(int) QueryCollection: Created new QUERY statementlog3:
    [114] lang.Object[],(PreparedStatement) Binding param 1: 3log3:
    [115] postChanges.oracle(TransactionEvent) Saving transaction changes...log3:
    [116] jbo.server(int) ViewObject: RicsvendorView Query Statement:
    log3:
    [117] jbo.server(int) SELECT Ricsvendor.ID, Ricsvendor.VENDORNAME, Ricsvendor.ADDRESS1, Ricsvendor.ADDRESS2, Ricsvendor.CITY, Ricsvendor.STATE, Ricsvendor.COUNTRY, Ricsvendor.ZIP, Ricsvendor.DESCRIPTION, Ricsvendor.KEYWORDS, Ricsvendor.NOTES FROM RICSVENDOR Ricsvendor WHERE (Id = :0)log3:
    log3: QUERY: SELECT Ricsvendor.ID, Ricsvendor.VENDORNAME, Ricsvendor.ADDRESS1, Ricsvendor.ADDRESS2, Ricsvendor.CITY, Ricsvendor.STATE, Ricsvendor.COUNTRY, Ricsvendor.ZIP, Ricsvendor.DESCRIPTION, Ricsvendor.KEYWORDS, Ricsvendor.NOTES FROM RICSVENDOR Ricsvendor WHERE (Id = :0)
    [118] oracle.jbo(createColumnList) Column count: 12log3:
    [119] jbo.server(int) ViewObject: RicsvendorView Query Statement: log3:
    [120] jbo.server(int) SELECT Ricsvendor.ID, Ricsvendor.VENDORNAME, Ricsvendor.ADDRESS1, Ricsvendor.ADDRESS2, Ricsvendor.CITY, Ricsvendor.STATE, Ricsvendor.COUNTRY, Ricsvendor.ZIP, Ricsvendor.DESCRIPTION, Ricsvendor.KEYWORDS, Ricsvendor.NOTES FROM RICSVENDOR Ricsvendor WHERE (Id = :0)log3:
    [121] executeQuery.java(int) QueryCollection: Created new QUERY statementlog3:
    [122] lang.Object[],(PreparedStatement) Binding param 1: 3log3:
    [123] oracle.jbo(createColumnList) Column count: 17log3:
    [124] jbo.server(int) ViewObject: RicscontentView Query Statement: log3:
    [125] jbo.server(int) SELECT Ricscontent.ID, Ricscontent.PARENTID, Ricscontent.VENDORID, Ricscontent.CONTENTTYPE, Ricscontent.TITLE, Ricscontent.DESCRIPTION, Ricscontent.KEYWORDS, Ricscontent.PREVVERSION, Ricscontent.NEXTVERSION, Ricscontent.SUBMITTEDBY FROM RICSCONTENT Ricscontent WHERE (Vendorid = :0 AND Contenttype = 'restaurant') AND Ricscontent.VENDORID = :1log3:
    [126] executeQuery.java(int) QueryCollection: Created new QUERY statementlog3:
    [127] lang.Object[],(PreparedStatement) Binding param 1: 3log3:
    [128] lang.Object[],(PreparedStatement) Binding param 2: 3log3:
    [129] oracle.jbo(createColumnList) Column count: 17log3:
    [130] jbo.server(int) ViewObject: RicscontentView Query Statement: log3:
    [131] jbo.server(int) SELECT Ricscontent.ID, Ricscontent.PARENTID, Ricscontent.VENDORID, Ricscontent.CONTENTTYPE, Ricscontent.TITLE, Ricscontent.DESCRIPTION, Ricscontent.KEYWORDS, Ricscontent.PREVVERSION, Ricscontent.NEXTVERSION, Ricscontent.SUBMITTEDBY FROM RICSCONTENT Ricscontent WHERE (Vendorid = :0 AND Contenttype = 'hotel') AND Ricscontent.VENDORID = :1log3:
    [132] executeQuery.java(int) QueryCollection: Created new QUERY statementlog3:
    [133] lang.Object[],(PreparedStatement) Binding param 1: 3log3:
    [134] lang.Object[],(PreparedStatement) Binding param 2: 3log3:
    [135] afterRollback.oracle(TransactionEvent) RicsvendorView notify ROLLBACK ... log3:
    [136] oracle.jbo(clearQueryCollectionCache) Clear QueryCollection in cache...log3:
    [137] oracle.jbo(createColumnList) Column count: 12log3:
    [138] jbo.server(int) ViewObject: RicsvendorView Query Statement: log3:
    [139] jbo.server(int) SELECT Ricsvendor.ID, Ricsvendor.VENDORNAME, Ricsvendor.ADDRESS1, Ricsvendor.ADDRESS2, Ricsvendor.CITY, Ricsvendor.STATE, Ricsvendor.COUNTRY, Ricsvendor.ZIP, Ricsvendor.DESCRIPTION, Ricsvendor.KEYWORDS, Ricsvendor.NOTES FROM RICSVENDOR Ricsvendor WHERE (Id = :0)log3:
    [140] executeQuery.java(int) QueryCollection: Created new QUERY statementlog3:
    [141] lang.Object[],(PreparedStatement) Binding param 1: 3log3:
    [142] afterRollback.oracle(TransactionEvent) Ricscontent_SysC001369Assoc_RicscontentView notify ROLLBACK ...
    log3:
    [143] oracle.jbo(clearQueryCollectionCache) Clear QueryCollection in cache...log3:
    [144] oracle.jbo(createColumnList) Column count: 17log3:
    [145] jbo.server(int) ViewObject: Ricscontent_SysC001369Assoc_RicscontentView Query Statement: log3:
    [146] jbo.server(int) SELECT Ricscontent.ID, Ricscontent.PARENTID, Ricscontent.VENDORID, Ricscontent.CONTENTTYPE, Ricscontent.TITLE, Ricscontent.DESCRIPTION, Ricscontent.KEYWORDS, Ricscontent.PREVVERSION, Ricscontent.NEXTVERSION, Ricscontent.SUBMITTEDBY FROM RICSCONTENT Ricscontent WHERE (Ricscontent.VENDORID = :1)log3:
    [147] executeQuery.java(int) QueryCollection: Created new QUERY statementlog3:
    [148] lang.Object[],(PreparedStatement) Binding param 1: 3log3:
    [149] afterRollback.oracle(TransactionEvent) RicscontentView notify ROLLBACK ... log3:
    [150] oracle.jbo(clearQueryCollectionCache) Clear QueryCollection in cache...log3:
    [151] afterRollback.oracle(TransactionEvent) RicsvendorView notify ROLLBACK ...
    log3:
    [152] oracle.jbo(clearQueryCollectionCache) Clear QueryCollection in cache...log3:
    [153] oracle.jbo(createColumnList) Column count: 12log3:
    [154] jbo.server(int) ViewObject: RicsvendorView Query Statement: log3:
    [155] jbo.server(int) SELECT Ricsvendor.ID, Ricsvendor.VENDORNAME, Ricsvendor.ADDRESS1, Ricsvendor.ADDRESS2, Ricsvendor.CITY, Ricsvendor.STATE, Ricsvendor.COUNTRY, Ricsvendor.ZIP, Ricsvendor.DESCRIPTION, Ricsvendor.KEYWORDS, Ricsvendor.NOTES FROM RICSVENDOR Ricsvendor WHERE (Id = :0)log3:
    [156] executeQuery.java(int) QueryCollection: Created new QUERY statementlog3:
    [157] lang.Object[],(PreparedStatement) Binding param 1: 3log3:
    [158] afterRollback.oracle(TransactionEvent) Ricscontent_SysC001369Assoc_RicscontentView notify ROLLBACK ... log3:
    [159] oracle.jbo(clearQueryCollectionCache) Clear QueryCollection in cache...log3:
    [160] oracle.jbo(createColumnList) Column count: 17log3:
    [161] jbo.server(int) ViewObject: Ricscontent_SysC001369Assoc_RicscontentView Query Statement: log3:
    [162] jbo.server(int) SELECT Ricscontent.ID, Ricscontent.PARENTID, Ricscontent.VENDORID, Ricscontent.CONTENTTYPE, Ricscontent.TITLE, Ricscontent.DESCRIPTION, Ricscontent.KEYWORDS, Ricscontent.PREVVERSION, Ricscontent.NEXTVERSION, Ricscontent.SUBMITTEDBY FROM RICSCONTENT Ricscontent WHERE (Ricscontent.VENDORID = :1)log3:
    [163] executeQuery.java(int) QueryCollection: Created new QUERY statementlog3:
    [164] lang.Object[],(PreparedStatement) Binding param 1: 3log3:
    [165] afterRollback.oracle(TransactionEvent) RicscontentView notify ROLLBACK ... log3:
    [166] oracle.jbo(clearQueryCollectionCache) Clear QueryCollection in cache...log3:
    [167] postChanges.oracle(TransactionEvent) Saving transaction changes...log3:
    [168] jbo.server(int) ViewObject: RicscontentView Query Statement: log3:
    [169] jbo.server(int) SELECT Ricscontent.ID, Ricscontent.PARENTID, Ricscontent.VENDORID, Ricscontent.CONTENTTYPE, Ricscontent.TITLE, Ricscontent.DESCRIPTION, Ricscontent.KEYWORDS, Ricscontent.PREVVERSION, Ricscontent.NEXTVERSION, Ricscontent.SUBMITTEDBY FROM RICSCONTENT Ricscontent WHERE (Id = :0) AND Ricscontent.VENDORID = :1log3:
    log3: QUERY: SELECT Ricscontent.ID, Ricscontent.PARENTID, Ricscontent.VENDORID, Ricscontent.CONTENTTYPE, Ricscontent.TITLE, Ricscontent.DESCRIPTION, Ricscontent.KEYWORDS, Ricscontent.PREVVERSION, Ricscontent.NEXTVERSION, Ricscontent.SUBMITTEDBY FROM RICSCONTENT Ricscontent WHERE (Id = :0) AND Ricscontent.VENDORID = :1
    [170] oracle.jbo(createColumnList) Column count: 17log3:
    [171] jbo.server(int) ViewObject: RicscontentView Query Statement:
    log3:
    [172] jbo.server(int) SELECT Ricscontent.ID, Ricscontent.PARENTID, Ricscontent.VENDORID, Ricscontent.CONTENTTYPE, Ricscontent.TITLE, Ricscontent.DESCRIPTION, Ricscontent.KEYWORDS, Ricscontent.PREVVERSION, Ricscontent.NEXTVERSION, Ricscontent.SUBMITTEDBY FROM RICSCONTENT Ricscontent WHERE (Id = :0) AND Ricscontent.VENDORID = :1log3:
    [173] executeQuery.java(int) QueryCollection: Created new QUERY statement
    log3:
    [174] lang.Object[],(PreparedStatement) Binding param 1: 14log3:
    [175] lang.Object[],(PreparedStatement) Binding null for 2log3:
    [176] afterRollback.oracle(TransactionEvent) RicsvendorView notify ROLLBACK ... log3:
    [177] oracle.jbo(clearQueryCollectionCache) Clear QueryCollection in cache...log3:
    [178] oracle.jbo(createColumnList) Column count: 12log3:
    [179] jbo.server(int) ViewObject: RicsvendorView Query Statement: log3:
    [180] jbo.server(int) SELECT Ricsvendor.ID, Ricsvendor.VENDORNAME, Ricsvendor.ADDRESS1, Ricsvendor.ADDRESS2, Ricsvendor.CITY, Ricsvendor.STATE, Ricsvendor.COUNTRY, Ricsvendor.ZIP, Ricsvendor.DESCRIPTION, Ricsvendor.KEYWORDS, Ricsvendor.NOTES FROM RICSVENDOR Ricsvendor WHERE (Id = :0)log3:
    [181] executeQuery.java(int) QueryCollection: Created new QUERY statementlog3:
    [182] lang.Object[],(PreparedStatement) Binding param 1: 3log3:
    [183] afterRollback.oracle(TransactionEvent) Ricscontent_SysC001369Assoc_RicscontentView notify ROLLBACK ... log3:
    [184] oracle.jbo(clearQueryCollectionCache) Clear QueryCollection in cache...log3:
    [185] oracle.jbo(createColumnList) Column count: 17log3:
    [186] jbo.server(int) ViewObject: Ricscontent_SysC001369Assoc_RicscontentView Query Statement: log3:
    [187] jbo.server(int) SELECT Ricscontent.ID, Ricscontent.PARENTID, Ricscontent.VENDORID, Ricscontent.CONTENTTYPE, Ricscontent.TITLE, Ricscontent.DESCRIPTION, Ricscontent.KEYWORDS, Ricscontent.PREVVERSION, Ricscontent.NEXTVERSION, Ricscontent.SUBMITTEDBY FROM RICSCONTENT Ricscontent WHERE (Ricscontent.VENDORID = :1)log3:
    [188] executeQuery.java(int) QueryCollection: Created new QUERY statementlog3:
    [189] lang.Object[],(PreparedStatement) Binding param 1: 3log3:
    [190] afterRollback.oracle(TransactionEvent) RicscontentView notify ROLLBACK ... log3:
    [191] oracle.jbo(clearQueryCollectionCache) Clear QueryCollection in cache...log3:
    log3: RicscontentView row with Id=14 not found!
    log3: java.lang.RuntimeException: RicscontentView row with Id=14 not found!
    void ricsjsp_html.RICSContent._jspService(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)log3:
    void oracle.jsp.runtime.HttpJsp.service(javax.servlet.ServletRequest, javax.servlet.ServletResponse)log3:
    void oracle.jsp.app.JspApplication.dispatchRequest(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)log3:
    void oracle.jsp.JspServlet.doDispatch(oracle.jsp.app.JspRequestContext)
    log3:
    void oracle.jsp.JspServlet.service(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)log3:
    void javax.servlet.http.HttpServlet.service(javax.servlet.ServletRequest, javax.servlet.ServletResponse)log3:
    void oracle.lite.web.JupServlet.service(oracle.lite.web.JupRequest, oracle.lite.web.JupResponse)log3:
    void oracle.lite.web.MimeServletHandler.handle(oracle.lite.web.JupApplication, java.lang.String, int, oracle.lite.web.JupRequest, oracle.lite.web.JupResponse)log3:
    void oracle.lite.web.JupApplication.service(oracle.lite.web.JupRequest, oracle.lite.web.JupResponse)log3:
    void oracle.lite.web.JupAppHandler.handle(oracle.lite.web.JupRequest, oracle.lite.web.JupResponse)log3:
    void oracle.lite.web.HTTPServer.include(javax.servlet.ServletRequest, javax.servlet.ServletResponse)log3:
    void oracle.lite.web.HTTPServer.forward(javax.servlet.ServletRequest, javax.servlet.ServletResponse)log3:
    boolean oracle.lite.web.HTTPServer.handleRequest(oracle.lite.web.JupInputStream, java.io.OutputStream)log3:
    boolean oracle.lite.web.JupServer.handle(oracle.lite.web.JupInputStream, java.io.OutputStream)log3:
    void oracle.lite.web.JupHTTPListener$JupHTTP.run()log3:
    null

    I've discovered that if I call
    ApplicationModule.remove();
    at the end of every JSP page, and I prevent JSPApplicationRegistry.returnAppModuleInstance(); from being called, it works. Obviously this is not a longterm solution.
    null

  • BC4J, ViewObject: setWhereClause vs ViewCriteria

    1.What is the difference between using setWhereClause and ViewCriteria object?
    2.When is better to use the first one and when the second?
    3.When used both, which one has priority, or are they anded together?
    Could anybody answer these questions?
    Thanks, Tom

    Manuel,
    There is also another method, getEstimatedRowCount(), which is the most efficient. It will perform a
    SELECT COUNT(*) FROM (your query with conditions)
    which puts all the work in the database and just returns the count.
    getFetchedRowCount() just tells you how many have been fetched so far and getRowCount() actually fetches all the rows into view/entity cache and then returns the total.

  • Where clause with Bind Variable in ViewObject

    As per recomendations from Jdev team they say that using Bind varialbles in where clause will improve the performance (Option 1) But it is causing us to create more view objects.
    Example : Lets say we have a View Object EmpVO
    Option 1:
    ViewObject vo=context.getViewObject("EmpVO");
    vo.setWhereClause("EMPNO=?");
    vo.setWhereClauseParam(0,st);
    (or)
    Option 2:
    vo.setWhereClause("EMPNO="+st);
    If we want to use same View Object "EmpVO" in another Action Class
    ViewObject vo1=context.getViewObject("EmpVO");
    vo1.setWhereClause("DEPTNO=?");
    vo1.setWhereClauseParam(0,str);
    It this case it throws an error saying BIND VARIABLE already exits. So we have to make another View Object.
    Where as if we did not use bind variable but used Option 2 approach the same view object can be used in multiple pages.(at the expense of performance as per Jdev team)
    Are we doing something wrong here or are there other ways to use the same view object when using bind variable in where clause.
    Thanks

    I haven't been using BC4J for a while, but I seem to recall that the recommendations are that you don't set the where clause at runtime: You're supposed to define your view with the bind parameter already in it.
    So you'd probably define an EmpsForEmpNoVO and type "EMPNO = ?" in the where box. (There are other ways of finding a single row/entity and one of those may well be more efficient. Perhaps a better example of where you might want a view of employees is WHERE DEPTNO = ?.)
    IIRC, all instances of a particular type of view share the same definition, so you have to be careful if you alter that at runtime. However, I think everything's set up so that you can have many different (and separate) resultsets for a single view (instance) - meaning that it's possible to "run" a view for (e.g.) two different ids. (It's definitely possible to create two different instances of a view from its definition - and the resultsets will definitely be separate then. I think there's a "create" method on the application module; I remember that "find..." always returns the same instance of the view.)
    Hope that's a push in the right direction (since no-one else had replied - and I hope not too much has changed since 9.0.3)....
    Mike.

  • Setting ViewObject Stored Procedure Where Clause Param from Struts Action

    I adapted/used Steve's example to get stored procedure to populate my ViewObject. However, I could not retrieve any rows after passing whereClause value from Struts action. The param in execureQueryForCollection returns null.
    What could be wrong. Thanks.
    Here's my code.
    ViewObjectImpl:
    package org.adb.sls.model;
    import java.math.BigDecimal;
    import java.sql.CallableStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Timestamp;
    import java.sql.Types;
    import oracle.jbo.JboException;
    import oracle.jbo.domain.Date;
    import oracle.jbo.domain.Number;
    import oracle.jbo.server.DBTransaction;
    import oracle.jbo.server.ViewObjectImpl;
    import oracle.jbo.server.ViewRowImpl;
    import oracle.jbo.server.ViewRowSetImpl;
    import oracle.jdbc.driver.OracleCallableStatement;
    import oracle.jdbc.driver.OracleTypes;
    // --- File generated by Oracle ADF Business Components Design Time.
    // --- Custom code may be added to this class.
    public class ViewApplicableLoanTypesImpl extends ViewObjectImpl
    * PLSQL block that will execute the REF_CURSOR
    private static final String SQL =
    "begin ? := sls_loan_types_pkg.get_applcbl_staff_lns_fn(?); end;";
    * PLSQL block that will count the REF_CURSOR returned rows
    private static final String COUNTSQL =
    "begin ? := sls_loan_types_pkg.get_count_applcbl_staff_lns_fn(?); end;";
    * This is the default constructor (do not remove)
    public ViewApplicableLoanTypesImpl()
    * Overridden framework method.
    * Wipe out all traces of a built-in query for this VO
    protected void create() {
    getViewDef().setQuery(null);
    getViewDef().setSelectClause(null);
    setQuery(null);
    * Overidden framework method
    protected void executeQueryForCollection(Object qc, Object[] params, int noUserParams)
    // input parameter is employee number
    String employeeNumber = null;
    if (params != null) {
    employeeNumber = (String) params[0];
    } else
    System.out.println("param is null");
    storeNewResultSet(qc,retrieveRefCursor(qc,employeeNumber));
    super.executeQueryForCollection(qc, params, noUserParams);
    protected ViewRowImpl createRowFromResultSet(Object qc, ResultSet rs)
    * We ignore the JDBC ResultSet passed by the framework (null anyway) and
    * use the resultset that we've stored in the query-collection-private
    * user data storage
    rs = getResultSet(qc);
    * Create a new row to populate
    ViewRowImpl r = createNewRowForCollection(qc);
    try {
    * Populate new row by attribute slot number for current row in Result Set
    populateAttributeForRow(r,0, nullOrNewNumber(rs.getBigDecimal(1)));
    populateAttributeForRow(r,1, nullOrNewNumber(rs.getBigDecimal(2)));
    populateAttributeForRow(r,2, rs.getString(3));
    populateAttributeForRow(r,3, nullOrNewNumber(rs.getBigDecimal(4)));
    populateAttributeForRow(r,4, rs.getString(5));
    catch (SQLException s) {
    throw new JboException(s);
    return r;
    protected boolean hasNextForCollection(Object qc)
    ResultSet rs = getResultSet(qc);
    boolean nextOne = false;
    try {
    nextOne = rs.next();
    * When were at the end of the result set, mark the query collection
    * as "FetchComplete".
    if (!nextOne) {
    setFetchCompleteForCollection(qc, true);
    * Close the result set, we're done with it
    rs.close();
    catch (SQLException s) {
    throw new JboException(s);
    return nextOne;
    protected void releaseUserDataForCollection(Object qc, Object rs)
    * Ignore the ResultSet passed in since we've created our own.
    * Fetch the ResultSet from the User-Data context instead
    ResultSet userDataRS = getResultSet(qc);
    if (userDataRS != null) {
    try {
    userDataRS.close();
    catch (SQLException s) {
    /* Ignore */
    super.releaseUserDataForCollection(qc, rs);
    public long getQueryHitCount(ViewRowSetImpl viewRowSet)
    Object[] params = viewRowSet.getParameters(true);
    String id = (String)params[0];
    CallableStatement st = null;
    try {
    st = getDBTransaction().createCallableStatement(COUNTSQL,DBTransaction.DEFAULT);
    * Register the first bind parameter as our return value of type CURSOR
    st.registerOutParameter(1,Types.NUMERIC);
    * Set the value of the 2nd bind variable to pass id as argument
    if (id == null) st.setNull(2,Types.VARCHAR);
    else st.setString(2,id);
    st.execute();
    return st.getLong(1);
    catch (SQLException s) {
    throw new JboException(s);
    finally {try {st.close();} catch (SQLException s) {}}
    * Return a JDBC ResultSet representing the REF CURSOR return
    * value from our stored package function.
    private ResultSet retrieveRefCursor(Object qc,String id) {
    CallableStatement st = null;
    try {
    st = getDBTransaction().createCallableStatement(SQL,DBTransaction.DEFAULT);
    * Register the first bind parameter as our return value of type CURSOR
    st.registerOutParameter(1,OracleTypes.CURSOR);
    * Set the value of the 2nd bind variable to pass id as argument
    if (id == null) st.setNull(2,Types.VARCHAR);
    else st.setString(2,id);
    st.execute();
    ResultSet rs = ((OracleCallableStatement)st).getCursor(1);
    * Make this result set use the fetch size from our View Object settings
    rs.setFetchSize(getFetchSize());
    return rs ;
    catch (SQLException s) {
    s.printStackTrace();
    throw new JboException(s);
    finally {try {st.close();} catch (SQLException s) {}}
    * Store a new result set in the query-collection-private user-data context
    private void storeNewResultSet(Object qc, ResultSet rs) {
    ResultSet existingRs = getResultSet(qc);
    // If this query collection is getting reused, close out any previous rowset
    if (existingRs != null) {
    try {existingRs.close();} catch (SQLException s) {}
    setUserDataForCollection(qc,rs);
    hasNextForCollection(qc); // Prime the pump with the first row.
    * Retrieve the result set wrapper from the query-collection user-data
    private ResultSet getResultSet(Object qc) {
    return (ResultSet)getUserDataForCollection(qc);
    * Return either null or a new oracle.jbo.domain.Date
    private static Date nullOrNewDate(Timestamp t) {
    return t != null ? new Date(t) : null;
    * Return either null or a new oracle.jbo.domain.Number
    private static Number nullOrNewNumber(BigDecimal b) {
    try {
    return b != null ? new Number(b) : null;
    catch (SQLException s) { }
    return null;
    Struts Action
    package org.adb.sls.view;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import oracle.jbo.ApplicationModule;
    import oracle.jbo.ViewObject;
    import org.apache.struts.action.ActionForm;
    import org.apache.struts.action.ActionForward;
    import org.apache.struts.action.ActionMapping;
    import oracle.adf.model.binding.DCDataControl;
    import oracle.adf.model.bc4j.DCJboDataControl;
    import oracle.jbo.html.BC4JContext;
    public class IndexAction extends DefaultADFAction
    protected ActionForward performActionLogic(ActionMapping mapping,
    ActionForm form, HttpServletRequest request,
    HttpServletResponse response)
    throws Exception {
    try {    
    ApplicationModule am = getApplicationModule("SLSApplicableLoanTypesDataControl", request);
    if (am == null)
    System.out.println("am is null");
    ViewObject vo = am.findViewObject("ViewApplicableLoanTypes");
    vo.setWhereClauseParam(0,request.getSession().getAttribute("SSO_EMPLOYEE_NUMBER"));
    vo.executeQuery();
    } catch (Exception e)
    e.printStackTrace();
    return mapping.findForward("success");
    Struts Config
    <form-beans>
    <form-bean name="DataForm" type="oracle.adf.controller.struts.forms.BindingContainerActionForm"/>
    </form-beans>
    <action-mappings>
    <action path="/index" className="oracle.adf.controller.struts.actions.DataActionMapping" type="org.adb.sls.view.IndexAction" name="DataForm" unknown="false">
    <set-property property="modelReference" value="indexUIModel"/>
    <forward name="success" path="/home.do"/>
    </action>
    <action path="/home" className="oracle.adf.controller.struts.actions.DataActionMapping" type="oracle.adf.controller.struts.actions.DataForwardAction" name="DataForm" parameter="/index.uix" unknown="true">
    <set-property property="modelReference" value="indexUIModel"/>
    </action>
    </action-mappings>

    I just found the solution. I've overridden setWhereClause method.
    public void setWhereClauseParams(Object[] values)
    ViewObjectImpl vo = (ViewObjectImpl) super.getViewObject();
    vo.setWhereClauseParam(0,values[0]);
    }

  • Object use count is negative when two users access ViewObject at same time

    I need help!
    In my application, if two users execute the same view object at the same time, the users will see a combination of the two record sets: One user will receive their requested result set plus part of the other user's set and the other will receieve only a partial result set.
    Here is what I get in the BC4J log:
    [1397] Diagnostic Properties: Timing:false Functions:false Linecount:true Threshold:6
    [1398] Connected to Oracle JBO Server - Version: 9.0.5.16.0
    [1399] mPCollUsePMgr is false
    [1400] ViewObjectImpl.mDefaultMaxRowsPerNode is 70
    [1401] ViewObjectImpl.mDefaultMaxActiveNodes is 30
    [1402] Default locking mode changed to: optimistic
    [1403] Created root application module: 'net.tetra.w2ms.Manager.model.w2ms_mgr_AppModule'
    [1404] Locale is: 'en_US'
    [1405] Oracle SQLBuilder: Registered driver: oracle.jdbc.driver.OracleDriver
    [1406] Creating a new pool resource
    [1407] Trying connection/2: url='jdbc:oracle:thin:@tetusdb01.tetra.net:1521:TETDW' info='{user=tetw2ms, password=wireless2}' ...
    [1408] Successfully logged in
    [1409] JDBCDriverVersion: 9.0.1.5.0
    [1410] DatabaseProductName: Oracle
    [1411] DatabaseProductVersion: Oracle9i Enterprise Edition Release 9.2.0.3.0 - Production With the Partitioning, OLAP and Oracle Data Mining options JServer Release 9.2.0.3.0 - Production
    [1412] Column count: 39
    [1413] ViewObject: ImBininventoryView close prepared statements...
    [1414] ViewObject: ImBininventoryView Created new QUERY statement
    [1415] SELECT ImBininventory.ITEMNUMBER, ImBininventory.STATUS, ImBininventory.LOCATION, ImBininventory.PALLETNUMBER, ImBininventory.LOTNUMBER, ImBininventory.STATUS1, ImBininventory.ITEM1, ImBininventory.LOCATION1, ImBininventory.PALLET1, ImBininventory.LOT1, ImBininventory.LOCATION2, ImBininventory.ITEM2, ImBininventory.STATUS2, ImBininventory.PALLET2, ImBininventory.LOT2, ImBininventory.PALLET3, ImBininventory.LOT4, ImBininventory.LOCATION5, ImBininventory.STATUS5, ImBininventory.PALLET5, ImBininventory.LOT5, ImBininventory.ITEM5, ImBininventory.ITEM6, ImBininventory.STATUS6, ImBininventory.EXPIRATIONDATE6, ImBininventory.RECEIVEDATE6, ImBininventory.LOCATION6, ImBininventory.PALLET6, ImBininventory.LOT6, ImBininventory.QTYONHANDNEG7, ImBininventory.QTYONHAND, ImBininventory.QTYALLOCATED, ImBininventory.QTYBACKORDERED, ImBininventory.QTYONORDER, ImBininventory.PONUMBER, ImBininventory.FREEZEQTYONHAND, ImBininventory.STOPSHIPDATE, ImBininventory.DATELASTCOUNTED, ImBininventory.FILLER FROM IM_BININVENTORY ImBininventory WHERE (location2 = '#RCV' and qtyonhand > 0)
    [1416] Bind params for ViewObject: ImBininventoryView
    [1417] Column count: 8
    [1418] ViewObject: VReplenishmentView close prepared statements...
    [1419] ViewObject: VReplenishmentView Created new QUERY statement
    [1420] SELECT VReplenishment.ITEMNUMBER, VReplenishment.BIN, VReplenishment.QTYONHAND, VReplenishment.DEMAND, VReplenishment.QTY_TO_PICK, VReplenishment.ENABLED, VReplenishment.UNITSPERPALLET, VReplenishment.PALLETCAPACITY FROM V_REPLENISHMENT VReplenishment WHERE (1=1)
    [1421] Bind params for ViewObject: VReplenishmentView
    [1422] Column count: 8
    [1423] ViewObject: VReplenishmentView Reusing defined prepared Statement
    [1424] Bind params for ViewObject: VReplenishmentView
    [1425] $$added root$$ id=-2
    [1426] oracle.jbo.common.JboAssert: (Assertion Failed) Object use count is negative on VR of VO VReplenishmentView
         at oracle.jbo.common.Diagnostic.ASSERT(Diagnostic.java:303)
         at oracle.jbo.common.Diagnostic.ASSERT(Diagnostic.java:326)
         at oracle.jbo.server.ViewRowStorage.releaseUse(ViewRowStorage.java:134)
         at oracle.jbo.server.ViewRowImpl.releaseInner(ViewRowImpl.java:238)
         at oracle.jbo.server.ViewRowImpl.getAttributeInternal(ViewRowImpl.java:647)
         at net.tetra.w2ms.Manager.model.VReplenishmentViewRowImpl.getItemnumber(VReplenishmentViewRowImpl.java:41)
         at net.tetra.w2ms.Wavelink.BCBroker.getReplenishments(BCBroker.java:2169)
         at net.tetra.w2ms.Wavelink.events.tasks_OnLoad.process(tasks_OnLoad.java:39)
         at com.wavelink.edge.events.PostData.ZzW(Unknown Source)
         at com.wavelink.edge.events.ApplicationContext.vw(Unknown Source)
         at com.wavelink.edge.events.ApplicationContext.handleEvent(Unknown Source)
         at com.wavelink.studio.server.SessionServlet.yZW(Unknown Source)
         at com.wavelink.studio.server.SessionServlet.doPost(Unknown Source)
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
         at com.evermind.server.http.ServletRequestDispatcher.invoke(ServletRequestDispatcher.java:765)
         at com.evermind.server.http.ServletRequestDispatcher.forwardInternal(ServletRequestDispatcher.java:317)
         at com.evermind.server.http.HttpRequestHandler.processRequest(HttpRequestHandler.java:790)
         at com.evermind.server.http.AJPRequestHandler.run(AJPRequestHandler.java:208)
         at com.evermind.server.http.AJPRequestHandler.run(AJPRequestHandler.java:125)
         at com.evermind.util.ReleasableResourcePooledExecutor$MyWorker.run(ReleasableResourcePooledExecutor.java:192)
         at java.lang.Thread.run(Thread.java:534)
    [1427] oracle.jbo.common.JboAssert: (Assertion Failed) Object use count is negative on VR of VO VReplenishmentView
         at oracle.jbo.common.Diagnostic.ASSERT(Diagnostic.java:303)
         at oracle.jbo.common.Diagnostic.ASSERT(Diagnostic.java:326)
         at oracle.jbo.server.ViewRowStorage.releaseUse(ViewRowStorage.java:134)
         at oracle.jbo.server.ViewRowImpl.releaseInner(ViewRowImpl.java:238)
         at oracle.jbo.server.ViewRowImpl.getAttributeInternal(ViewRowImpl.java:647)
         at net.tetra.w2ms.Manager.model.VReplenishmentViewRowImpl.getBin(VReplenishmentViewRowImpl.java:57)
         at net.tetra.w2ms.Wavelink.BCBroker.getReplenishments(BCBroker.java:2169)
         at net.tetra.w2ms.Wavelink.events.tasks_OnLoad.process(tasks_OnLoad.java:39)
         at com.wavelink.edge.events.PostData.ZzW(Unknown Source)
         at com.wavelink.edge.events.ApplicationContext.vw(Unknown Source)
         at com.wavelink.edge.events.ApplicationContext.handleEvent(Unknown Source)
         at com.wavelink.studio.server.SessionServlet.yZW(Unknown Source)
         at com.wavelink.studio.server.SessionServlet.doPost(Unknown Source)
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
         at com.evermind.server.http.ServletRequestDispatcher.invoke(ServletRequestDispatcher.java:765)
         at com.evermind.server.http.ServletRequestDispatcher.forwardInternal(ServletRequestDispatcher.java:317)
         at com.evermind.server.http.HttpRequestHandler.processRequest(HttpRequestHandler.java:790)
         at com.evermind.server.http.AJPRequestHandler.run(AJPRequestHandler.java:208)
         at com.evermind.server.http.AJPRequestHandler.run(AJPRequestHandler.java:125)
         at com.evermind.util.ReleasableResourcePooledExecutor$MyWorker.run(ReleasableResourcePooledExecutor.java:192)
         at java.lang.Thread.run(Thread.java:534)
    [1428] oracle.jbo.common.JboAssert: (Assertion Failed) Object use count is negative on VR of VO VReplenishmentView
         at oracle.jbo.common.Diagnostic.ASSERT(Diagnostic.java:303)
         at oracle.jbo.common.Diagnostic.ASSERT(Diagnostic.java:326)
         at oracle.jbo.server.ViewRowStorage.releaseUse(ViewRowStorage.java:134)
         at oracle.jbo.server.ViewRowImpl.releaseInner(ViewRowImpl.java:238)
         at oracle.jbo.server.ViewRowImpl.getAttributeInternal(ViewRowImpl.java:647)
         at net.tetra.w2ms.Manager.model.VReplenishmentViewRowImpl.getQtyonhand(VReplenishmentViewRowImpl.java:73)
         at net.tetra.w2ms.Wavelink.BCBroker.getReplenishments(BCBroker.java:2169)
         at net.tetra.w2ms.Wavelink.events.tasks_OnLoad.process(tasks_OnLoad.java:39)
         at com.wavelink.edge.events.PostData.ZzW(Unknown Source)
         at com.wavelink.edge.events.ApplicationContext.vw(Unknown Source)
         at com.wavelink.edge.events.ApplicationContext.handleEvent(Unknown Source)
         at com.wavelink.studio.server.SessionServlet.yZW(Unknown Source)
         at com.wavelink.studio.server.SessionServlet.doPost(Unknown Source)
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
         at com.evermind.server.http.ServletRequestDispatcher.invoke(ServletRequestDispatcher.java:765)
         at com.evermind.server.http.ServletRequestDispatcher.forwardInternal(ServletRequestDispatcher.java:317)
         at com.evermind.server.http.HttpRequestHandler.processRequest(HttpRequestHandler.java:790)
         at com.evermind.server.http.AJPRequestHandler.run(AJPRequestHandler.java:208)
         at com.evermind.server.http.AJPRequestHandler.run(AJPRequestHandler.java:125)
         at com.evermind.util.ReleasableResourcePooledExecutor$MyWorker.run(ReleasableResourcePooledExecutor.java:192)
         at java.lang.Thread.run(Thread.java:534)
    [1429] oracle.jbo.common.JboAssert: (Assertion Failed) Object use count is negative on VR of VO VReplenishmentView
         at oracle.jbo.common.Diagnostic.ASSERT(Diagnostic.java:303)
         at oracle.jbo.common.Diagnostic.ASSERT(Diagnostic.java:326)
         at oracle.jbo.server.ViewRowStorage.releaseUse(ViewRowStorage.java:134)
         at oracle.jbo.server.ViewRowImpl.releaseInner(ViewRowImpl.java:238)
         at oracle.jbo.server.ViewRowImpl.getAttributeInternal(ViewRowImpl.java:647)
         at net.tetra.w2ms.Manager.model.VReplenishmentViewRowImpl.getBin(VReplenishmentViewRowImpl.java:57)
         at net.tetra.w2ms.Wavelink.BCBroker.getReplenishments(BCBroker.java:2169)
         at net.tetra.w2ms.Wavelink.events.tasks_OnLoad.process(tasks_OnLoad.java:39)
         at com.wavelink.edge.events.PostData.ZzW(Unknown Source)
         at com.wavelink.edge.events.ApplicationContext.vw(Unknown Source)
         at com.wavelink.edge.events.ApplicationContext.handleEvent(Unknown Source)
         at com.wavelink.studio.server.SessionServlet.yZW(Unknown Source)
         at com.wavelink.studio.server.SessionServlet.doPost(Unknown Source)
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
         at com.evermind.server.http.ServletRequestDispatcher.invoke(ServletRequestDispatcher.java:765)
         at com.evermind.server.http.ServletRequestDispatcher.forwardInternal(ServletRequestDispatcher.java:317)
         at com.evermind.server.http.HttpRequestHandler.processRequest(HttpRequestHandler.java:790)
         at com.evermind.server.http.AJPRequestHandler.run(AJPRequestHandler.java:208)
         at com.evermind.server.http.AJPRequestHandler.run(AJPRequestHandler.java:125)
         at com.evermind.util.ReleasableResourcePooledExecutor$MyWorker.run(ReleasableResourcePooledExecutor.java:192)
         at java.lang.Thread.run(Thread.java:534)
    oracle.jbo.common.JboAssert: (Assertion Failed) Object use count is negative on VR of VO VReplenishmentView
         at oracle.jbo.common.Diagnostic.ASSERT(Diagnostic.java:303)
         at oracle.jbo.common.Diagnostic.ASSERT(Diagnostic.java:326)
         at oracle.jbo.server.ViewRowStorage.releaseUse(ViewRowStorage.java:134)
         at oracle.jbo.server.ViewRowImpl.releaseInner(ViewRowImpl.java:238)
         at oracle.jbo.server.ViewRowImpl.validate(ViewRowImpl.java:615)
         at oracle.jbo.server.ViewRowSetIteratorImpl.validateCurrentRow(ViewRowSetIteratorImpl.java:3090)
         at oracle.jbo.server.ViewRowSetIteratorImpl.next(ViewRowSetIteratorImpl.java:1545)
         at oracle.jbo.server.ViewRowSetImpl.next(ViewRowSetImpl.java:2606)
         at oracle.jbo.server.ViewObjectImpl.next(ViewObjectImpl.java:5006)
         at net.tetra.w2ms.Wavelink.BCBroker.getReplenishments(BCBroker.java:2140)
         at net.tetra.w2ms.Wavelink.events.tasks_OnLoad.process(tasks_OnLoad.java:39)
         at com.wavelink.edge.events.PostData.ZzW(Unknown Source)
         at com.wavelink.edge.events.ApplicationContext.vw(Unknown Source)
         at com.wavelink.edge.events.ApplicationContext.handleEvent(Unknown Source)
         at com.wavelink.studio.server.SessionServlet.yZW(Unknown Source)
         at com.wavelink.studio.server.SessionServlet.doPost(Unknown Source)
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
         at com.evermind.server.http.ServletRequestDispatcher.invoke(ServletRequestDispatcher.java:765)
         at com.evermind.server.http.ServletRequestDispatcher.forwardInternal(ServletRequestDispatcher.java:317)
         at com.evermind.server.http.HttpRequestHandler.processRequest(HttpRequestHandler.java:790)
         at com.evermind.server.http.AJPRequestHandler.run(AJPRequestHandler.java:208)
         at com.evermind.server.http.AJPRequestHandler.run(AJPRequestHandler.java:125)
         at com.evermind.util.ReleasableResourcePooledExecutor$MyWorker.run(ReleasableResourcePooledExecutor.java:192)
         at java.lang.Thread.run(Thread.java:534)
    [1431] oracle.jbo.common.JboAssert: (Assertion Failed) Object use count is negative on VR of VO VReplenishmentView
         at oracle.jbo.common.Diagnostic.ASSERT(Diagnostic.java:303)
         at oracle.jbo.common.Diagnostic.ASSERT(Diagnostic.java:326)
         at oracle.jbo.server.ViewRowStorage.releaseUse(ViewRowStorage.java:134)
         at oracle.jbo.server.ViewRowImpl.releaseInner(ViewRowImpl.java:238)
         at oracle.jbo.server.ViewRowImpl.getAttributeInternal(ViewRowImpl.java:647)
         at net.tetra.w2ms.Manager.model.VReplenishmentViewRowImpl.getQtyonhand(VReplenishmentViewRowImpl.java:73)
         at net.tetra.w2ms.Wavelink.BCBroker.getReplenishments(BCBroker.java:2169)
         at net.tetra.w2ms.Wavelink.events.tasks_OnLoad.process(tasks_OnLoad.java:39)
         at com.wavelink.edge.events.PostData.ZzW(Unknown Source)
         at com.wavelink.edge.events.ApplicationContext.vw(Unknown Source)
         at com.wavelink.edge.events.ApplicationContext.handleEvent(Unknown Source)
         at com.wavelink.studio.server.SessionServlet.yZW(Unknown Source)
         at com.wavelink.studio.server.SessionServlet.doPost(Unknown Source)
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
         at com.evermind.server.http.ServletRequestDispatcher.invoke(ServletRequestDispatcher.java:765)
         at com.evermind.server.http.ServletRequestDispatcher.forwardInternal(ServletRequestDispatcher.java:317)
         at com.evermind.server.http.HttpRequestHandler.processRequest(HttpRequestHandler.java:790)
         at com.evermind.server.http.AJPRequestHandler.run(AJPRequestHandler.java:208)
         at com.evermind.server.http.AJPRequestHandler.run(AJPRequestHandler.java:125)
         at com.evermind.util.ReleasableResourcePooledExecutor$MyWorker.run(ReleasableResourcePooledExecutor.java:192)
         at java.lang.Thread.run(Thread.java:534)
    [1432] oracle.jbo.common.JboAssert: (Assertion Failed) Object use count is negative on VR of VO VReplenishmentView
         at oracle.jbo.common.Diagnostic.ASSERT(Diagnostic.java:303)
         at oracle.jbo.common.Diagnostic.ASSERT(Diagnostic.java:326)
         at oracle.jbo.server.ViewRowStorage.releaseUse(ViewRowStorage.java:134)
         at oracle.jbo.server.ViewRowImpl.releaseInner(ViewRowImpl.java:238)
         at oracle.jbo.server.ViewRowImpl.getAttributeInternal(ViewRowImpl.java:647)
         at net.tetra.w2ms.Manager.model.VReplenishmentViewRowImpl.getItemnumber(VReplenishmentViewRowImpl.java:41)
         at net.tetra.w2ms.Wavelink.BCBroker.getReplenishments(BCBroker.java:2169)
         at net.tetra.w2ms.Wavelink.events.tasks_OnLoad.process(tasks_OnLoad.java:39)
         at com.wavelink.edge.events.PostData.ZzW(Unknown Source)
         at com.wavelink.edge.events.ApplicationContext.vw(Unknown Source)
         at com.wavelink.edge.events.ApplicationContext.handleEvent(Unknown Source)
         at com.wavelink.studio.server.SessionServlet.yZW(Unknown Source)
         at com.wavelink.studio.server.SessionServlet.doPost(Unknown Source)
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
         at com.evermind.server.http.ServletRequestDispatcher.invoke(ServletRequestDispatcher.java:765)
         at com.evermind.server.http.ServletRequestDispatcher.forwardInternal(ServletRequestDispatcher.java:317)
         at com.evermind.server.http.HttpRequestHandler.processRequest(HttpRequestHandler.java:790)
         at com.evermind.server.http.AJPRequestHandler.run(AJPRequestHandler.java:208)
         at com.evermind.server.http.AJPRequestHandler.run(AJPRequestHandler.java:125)
         at com.evermind.util.ReleasableResourcePooledExecutor$MyWorker.run(ReleasableResourcePooledExecutor.java:192)
         at java.lang.Thread.run(Thread.java:534)
    [1432] oracle.jbo.common.JboAssert: (Assertion Failed) Object use count is negative on VR of VO VReplenishmentView
         at oracle.jbo.common.Diagnostic.ASSERT(Diagnostic.java:303)
         at oracle.jbo.common.Diagnostic.ASSERT(Diagnostic.java:326)
         at oracle.jbo.server.ViewRowStorage.releaseUse(ViewRowStorage.java:134)
         at oracle.jbo.server.ViewRowImpl.releaseInner(ViewRowImpl.java:238)
         at oracle.jbo.server.ViewRowImpl.validate(ViewRowImpl.java:615)
         at oracle.jbo.server.ViewRowSetIteratorImpl.validateCurrentRow(ViewRowSetIteratorImpl.java:3090)
         at oracle.jbo.server.ViewRowSetIteratorImpl.next(ViewRowSetIteratorImpl.java:1545)
         at oracle.jbo.server.ViewRowSetImpl.next(ViewRowSetImpl.java:2606)
         at oracle.jbo.server.ViewObjectImpl.next(ViewObjectImpl.java:5006)
         at net.tetra.w2ms.Wavelink.BCBroker.getReplenishments(BCBroker.java:2140)
         at net.tetra.w2ms.Wavelink.events.tasks_OnLoad.process(tasks_OnLoad.java:39)
         at com.wavelink.edge.events.PostData.ZzW(Unknown Source)
         at com.wavelink.edge.events.ApplicationContext.vw(Unknown Source)
         at com.wavelink.edge.events.ApplicationContext.handleEvent(Unknown Source)
         at com.wavelink.studio.server.SessionServlet.yZW(Unknown Source)
         at com.wavelink.studio.server.SessionServlet.doPost(Unknown Source)
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
         at com.evermind.server.http.ServletRequestDispatcher.invoke(ServletRequestDispatcher.java:765)
         at com.evermind.server.http.ServletRequestDispatcher.forwardInternal(ServletRequestDispatcher.java:317)
         at com.evermind.server.http.HttpRequestHandler.processRequest(HttpRequestHandler.java:790)
         at com.evermind.server.http.AJPRequestHandler.run(AJPRequestHandler.java:208)
         at com.evermind.server.http.AJPRequestHandler.run(AJPRequestHandler.java:125)
         at com.evermind.util.ReleasableResourcePooledExecutor$MyWorker.run(ReleasableResourcePooledExecutor.java:192)
         at java.lang.Thread.run(Thread.java:534)
    [1434] oracle.jbo.common.JboAssert: (Assertion Failed) Object use count is negative on VR of VO VReplenishmentView
         at oracle.jbo.common.Diagnostic.ASSERT(Diagnostic.java:303)
         at oracle.jbo.common.Diagnostic.ASSERT(Diagnostic.java:326)
         at oracle.jbo.server.ViewRowStorage.releaseUse(ViewRowStorage.java:134)
         at oracle.jbo.server.ViewRowImpl.releaseInner(ViewRowImpl.java:238)
         at oracle.jbo.server.ViewRowImpl.getAttributeInternal(ViewRowImpl.java:647)
         at net.tetra.w2ms.Manager.model.VReplenishmentViewRowImpl.getBin(VReplenishmentViewRowImpl.java:57)
         at net.tetra.w2ms.Wavelink.BCBroker.getReplenishments(BCBroker.java:2169)
         at net.tetra.w2ms.Wavelink.events.tasks_OnLoad.process(tasks_OnLoad.java:39)
         at com.wavelink.edge.events.PostData.ZzW(Unknown Source)
         at com.wavelink.edge.events.ApplicationContext.vw(Unknown Source)
         at com.wavelink.edge.events.ApplicationContext.handleEvent(Unknown Source)
         at com.wavelink.studio.server.SessionServlet.yZW(Unknown Source)
         at com.wavelink.studio.server.SessionServlet.doPost(Unknown Source)
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
         at com.evermind.server.http.ServletRequestDispatcher.invoke(ServletRequestDispatcher.java:765)
         at com.evermind.server.http.ServletRequestDispatcher.forwardInternal(ServletRequestDispatcher.java:317)
         at com.evermind.server.http.HttpRequestHandler.processRequest(HttpRequestHandler.java:790)
         at com.evermind.server.http.AJPRequestHandler.run(AJPRequestHandler.java:208)
         at com.evermind.server.http.AJPRequestHandler.run(AJPRequestHandler.java:125)
         at com.evermind.util.ReleasableResourcePooledExecutor$MyWorker.run(ReleasableResourcePooledExecutor.java:192)
         at java.lang.Thread.run(Thread.java:534)
    [1435] oracle.jbo.common.JboAssert: (Assertion Failed) Object use count is negative on VR of VO VReplenishmentView
         at oracle.jbo.common.Diagnostic.ASSERT(Diagnostic.java:303)
         at oracle.jbo.common.Diagnostic.ASSERT(Diagnostic.java:326)
         at oracle.jbo.server.ViewRowStorage.releaseUse(ViewRowStorage.java:134)
         at oracle.jbo.server.ViewRowImpl.releaseInner(ViewRowImpl.java:238)
         at oracle.jbo.server.ViewRowImpl.getAttributeInternal(ViewRowImpl.java:647)
         at net.tetra.w2ms.Manager.model.VReplenishmentViewRowImpl.getQtyonhand(VReplenishmentViewRowImpl.java:73)
         at net.tetra.w2ms.Wavelink.BCBroker.getReplenishments(BCBroker.java:2169)
         at net.tetra.w2ms.Wavelink.events.tasks_OnLoad.process(tasks_OnLoad.java:39)
         at com.wavelink.edge.events.PostData.ZzW(Unknown Source)
         at com.wavelink.edge.events.ApplicationContext.vw(Unknown Source)
         at com.wavelink.edge.events.ApplicationContext.handleEvent(Unknown Source)
         at com.wavelink.studio.server.SessionServlet.yZW(Unknown Source)
         at com.wavelink.studio.server.SessionServlet.doPost(Unknown Source)
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
         at com.evermind.server.http.ServletRequestDispatcher.invoke(ServletRequestDispatcher.java:765)
         at com.evermind.server.http.ServletRequestDispatcher.forwardInternal(ServletRequestDispatcher.java:317)
         at com.evermind.server.http.HttpRequestHandler.processRequest(HttpRequestHandler.java:790)
         at com.evermind.server.http.AJPRequestHandler.run(AJPRequestHandler.java:208)
         at com.evermind.server.http.AJPRequestHandler.run(AJPRequestHandler.java:125)
         at com.evermind.util.ReleasableResourcePooledExecutor$MyWorker.run(ReleasableResourcePooledExecutor.java:192)
         at java.lang.Thread.run(Thread.java:534)
    [1436] oracle.jbo.common.JboAssert: (Assertion Failed) Object use count is negative on VR of VO VReplenishmentView
         at oracle.jbo.common.Diagnostic.ASSERT(Diagnostic.java:303)
         at oracle.jbo.common.Diagnostic.ASSERT(Diagnostic.java:326)
         at oracle.jbo.server.ViewRowStorage.releaseUse(ViewRowStorage.java:134)
         at oracle.jbo.server.ViewRowImpl.releaseInner(ViewRowImpl.java:238)
         at oracle.jbo.server.ViewRowImpl.getAttributeInternal(ViewRowImpl.java:647)
         at net.tetra.w2ms.Manager.model.VReplenishmentViewRowImpl.getItemnumber(VReplenishmentViewRowImpl.java:41)
         at net.tetra.w2ms.Wavelink.BCBroker.getReplenishments(BCBroker.java:2169)
         at net.tetra.w2ms.Wavelink.events.tasks_OnLoad.process(tasks_OnLoad.java:39)
         at com.wavelink.edge.events.PostData.ZzW(Unknown Source)
         at com.wavelink.edge.events.ApplicationContext.vw(Unknown Source)
         at com.wavelink.edge.events.ApplicationContext.handleEvent(Unknown Source)
         at com.wavelink.studio.server.SessionServlet.yZW(Unknown Source)
         at com.wavelink.studio.server.SessionServlet.doPost(Unknown Source)
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
         at com.evermind.server.http.ServletRequestDispatcher.invoke(ServletRequestDispatcher.java:765)
         at com.evermind.server.http.ServletRequestDispatcher.forwardInternal(ServletRequestDispatcher.java:317)
         at com.evermind.server.http.HttpRequestHandler.processRequest(HttpRequestHandler.java:790)
         at com.evermind.server.http.AJPRequestHandler.run(AJPRequestHandler.java:208)
         at com.evermind.server.http.AJPRequestHandler.run(AJPRequestHandler.java:125)
         at com.evermind.util.ReleasableResourcePooledExecutor$MyWorker.run(ReleasableResourcePooledExecutor.java:192)
         at java.lang.Thread.run(Thread.java:534)
    [1437] oracle.jbo.common.JboAssert: (Assertion Failed) Object use count is negative on VR of VO VReplenishmentView
         at oracle.jbo.common.Diagnostic.ASSERT(Diagnostic.java:303)
         at oracle.jbo.common.Diagnostic.ASSERT(Diagnostic.java:326)
         at oracle.jbo.server.ViewRowStorage.releaseUse(ViewRowStorage.java:134)
         at oracle.jbo.server.ViewRowImpl.releaseInner(ViewRowImpl.java:238)
         at oracle.jbo.server.ViewRowImpl.getAttributeInternal(ViewRowImpl.java:647)
         at net.tetra.w2ms.Manager.model.VReplenishmentViewRowImpl.getBin(VReplenishmentViewRowImpl.java:57)
         at net.tetra.w2ms.Wavelink.BCBroker.getReplenishments(BCBroker.java:2169)
         at net.tetra.w2ms.Wavelink.events.tasks_OnLoad.process(tasks_OnLoad.java:39)
         at com.wavelink.edge.events.PostData.ZzW(Unknown Source)
         at com.wavelink.edge.events.ApplicationContext.vw(Unknown Source)
         at com.wavelink.edge.events.ApplicationContext.handleEvent(Unknown Source)
         at com.wavelink.studio.server.SessionServlet.yZW(Unknown Source)
         at com.wavelink.studio.server.SessionServlet.doPost(Unknown Source)
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
         at com.evermind.server.http.ServletRequestDispatcher.invoke(ServletRequestDispatcher.java:765)
         at com.evermind.server.http.ServletRequestDispatcher.forwardInternal(ServletRequestDispatcher.java:317)
         at com.evermind.server.http.HttpRequestHandler.processRequest(HttpRequestHandler.java:790)
         at com.evermind.server.http.AJPRequestHandler.run(AJPRequestHandler.java:208)
         at com.evermind.server.http.AJPRequestHandler.run(AJPRequestHandler.java:125)
         at com.evermind.util.ReleasableResourcePooledExecutor$MyWorker.run(ReleasableResourcePooledExecutor.java:192)
         at java.lang.Thread.run(Thread.java:534)
    [1438] oracle.jbo.common.JboAssert: (Assertion Failed) Object use count is negative on VR of VO VReplenishmentView
         at oracle.jbo.common.Diagnostic.ASSERT(Diagnostic.java:303)
         at oracle.jbo.common.Diagnostic.ASSERT(Diagnostic.java:326)
         at oracle.jbo.server.ViewRowStorage.releaseUse(ViewRowStorage.java:134)
         at oracle.jbo.server.ViewRowImpl.releaseInner(ViewRowImpl.java:238)
         at oracle.jbo.server.ViewRowImpl.getAttributeInternal(ViewRowImpl.java:647)
         at net.tetra.w2ms.Manager.model.VReplenishmentViewRowImpl.getQtyonhand(VReplenishmentViewRowImpl.java:73)
         at net.tetra.w2ms.Wavelink.BCBroker.getReplenishments(BCBroker.java:2169)
         at net.tetra.w2ms.Wavelink.events.tasks_OnLoad.process(tasks_OnLoad.java:39)
         at com.wavelink.edge.events.PostData.ZzW(Unknown Source)
         at com.wavelink.edge.events.ApplicationContext.vw(Unknown Source)
         at com.wavelink.edge.events.ApplicationContext.handleEvent(Unknown Source)
         at com.wavelink.studio.server.SessionServlet.yZW(Unknown Source)
         at com.wavelink.studio.server.SessionServlet.doPost(Unknown Source)
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
         at com.evermind.server.http.ServletRequestDispatcher.invoke(ServletRequestDispatcher.java:765)
         at com.evermind.server.http.ServletRequestDispatcher.forwardInternal(ServletRequestDispatcher.java:317)
         at com.evermind.server.http.HttpRequestHandler.processRequest(HttpRequestHandler.java:790)
         at com.evermind.server.http.AJPRequestHandler.run(AJPRequestHandler.java:208)
         at com.evermind.server.http.AJPRequestHandler.run(AJPRequestHandler.java:125)
         at com.evermind.util.ReleasableResourcePooledExecutor$MyWorker.run(ReleasableResourcePooledExecutor.java:192)
         at java.lang.Thread.run(Thread.java:534)
    [1439] Column count: 8
    [1440] ViewObject: VReplenishmentView Reusing defined prepared Statement
    [1441] Bind params for ViewObject: VReplenishmentView
    [1442] $$added root$$ id=-2
    Does anyone have any ideas? This is a very frustrating problem!

    A little more detail...
    Deployment is to iAS 10g (9.0.4)
    App written with jdev 9.0.5.2
    Code where problem occurs:
    public String[] getReplenishments() throws Exception {
    String[] replenishmentLists = new String[2];
    boolean firstTime = true;
    try {
    if (w2msAM == null) {
    w2msAM = Configuration.createRootApplicationModule(amDef, config);
    ViewObject vo = w2msAM.findViewObject("VReplenishmentView");
    vo.setWhereClause("1=1");
    vo.executeQuery();
    logger.debug("VReplenishmentView returned " + vo.getRowCount() +
    " rows");
    StringBuffer rlDisplay = new StringBuffer();
    StringBuffer rlFile = new StringBuffer();
    while (vo.hasNext()) {
    if (!firstTime) {
    rlFile.append("\n");
    rlDisplay.append(",");
    firstTime = false;
    VReplenishmentViewRowImpl row = (VReplenishmentViewRowImpl) vo.next();
    rlFile.append(row.getItemnumber());
    rlDisplay.append(" " +
    (StringHelper.padRight(row.getItemnumber(), 14) +
    StringHelper.padRight(row.getBin(), 11) +
    StringHelper.padLeft(String.valueOf(
    row.getQtyonhand().longValue()).toString(), 4)));
    if (rlFile != null) {
    replenishmentLists[0] = rlFile.toString();
    rlFile = null;
    replenishmentLists[1] = rlDisplay.toString();
    rlDisplay = null;
    } else {
    replenishmentLists[0] = "";
    replenishmentLists[1] = "";
    vo.closeRowSet();
    vo.setWhereClause("1=1");
    return replenishmentLists;
    } catch (Exception e) {
    logger.error("getReplenishments:" + e.toString());
    e.printStackTrace();
    throw e;
    Thanks for any help...
    Dirk.

  • SQL only ViewObject with WhereClause

    I have a sql only viewobject. My query that makes this viewobject contains a where clause to indicate a join. The viewobject works fine but I cannot do the setWhereClause(string) to add on criteria if I want to search the view. It looks like bc4j doesn't know there already is a where clause started in the query and so it tacks on a new WHERE clause which makes a bad query.
    Any suggestions on how to get around this?

    Darko, we try hard to offer much more functionality (and advanced functionality) than a simple JDBC prepared statement.
    I tried creating an expert mode SQL query:
    SELECT DISTINCT EMPNO, ENAME FROM EMP.
    Then at runtime I do:
    vo.setWhereClause("ENAME LIKE '%'||?||'%');
    vo.setWhereClauseParam(0,'A');.
    and this works fine. The trick is that since expert-mode view objects get wrapped as inline views (to allow runtime appending of WHERE clause, actually), you need to select any column in the select statement to which you want to later refer in a dynamically-appended where clause.
    If you want to prevent the inline-view wrapping, you can write the following code in your view object's ViewObjectImpl subclass to force the VO to NOT be treated as an expert-mode SQL VO.
      // Goes in your view object impl subclass
      public void create() {
         // Force this VO to NOT be treated as an expert-mode SQL, so that
         // its query does not get wrapped as an inline view.
         getViewDef().setFullSql(false);
      }I used this trick above to create an expert mode query like:
    SELECT DISTINCT deptno FROM empand then at runtime I add a dynamic where clause that refers to a column
    in EMP that is not in the select list like this:
        ViewObject vo = am.findViewObject("View1");
        vo.setWhereClause("ename like '%A%'");
        vo.executeQuery();
        System.out.println(vo.first().getAttribute(0));and this causes the query to come out as:
    SELECT DISTINCT deptno FROM emp WHERE ename like '%A%'.
    instead of:
    SELECT * FROM (SELECT DISTINCT deptno FROM emp) QRSLT WHERE ename like '%A%'which would cause an error due to the fact that ename is not in the select list of the original (wrapped, inline) query.

  • ViewObject with Where clause

    I am using JDev 9.03.
    I created a VO and in expert mode I added a where clause that accepts 1 parameter. I have a uiXML page that needs to pass a parameter to a second page and use that parameter in the VO where clause. I need to have the parameter set in the where clause before the page can be rendered. How do I do this?

    I have been watching another thread and received an answer as to how to do this within a servlet.
    Viktor wrote:
    You must get exactly the same object that bc4j has created.
    From bajacontext you can reach everything...
    like appmodule.. and even ViewObject..
    Add a null event, which runs before your page is rendered...
    <event name="null">  
    <bc4j:findRootAppModule name="PenCmpAppModule">
    <bc4j:findViewObject name="RdmsViewUsage">           
    <method class="FrmFilters" method="handleRdms"/>   
    </bc4j:findViewObject>
    </bc4j:findRootAppModule>
    </event>and create an event handler...
    public static EventResult handleRdos(BajaContext context, Page page, PageEvent event)  
    {    ViewObject vobj= ServletBindingUtils.getViewObject(context);    
    HttpSession session = context.getServletRequest().getSession(false);    
    String OrgId=(String)session.getAttribute("S_ORGID");    
    vobj.setWhereClause("ORG_ID='"+OrgId+"'");    
    vobj.executeQuery();    
    return null;   }

  • Modfiying SQL in a viewObject in a differenat frame

    I wish to collect information from one frame and display the results of a query in another frame.
    My initial idea was to generate an event when the submit bottom was pressed, modify the SQL in the viewObject in the eventHandler class and then have that viewObject displayed in the results frame.
    Do I put the event in the .uix for the entire page or just in the .uix for the individual frame.
    How do I get the viewObject? Right now it is scoped in the results frame.
    How do I modify the SQL query by appending a where clause?
    I can not find an example in the docs. If there is, please tell me where.
    Regards,
    Bill

    This falls in the the realm of answering my own question, but if the JDeveloper team could say right track / wrong track, I would appreciate it.
    I wish to collect information from one frame and display the results of a query in another frame.
    My initial idea was to generate an event when the submit bottom was pressed, modify the SQL in the viewObject in the eventHandler class and then have that viewObject displayed in the results frame.
    Do I put the event in the .uix for the entire page or just in the .uix for the individual frame.Put the event in same frame(.uix) as the submit button.
    How do I get the viewObject? Right now it is scoped in the results frame.Get the ViewObjecy from the ApplicationModule
    From BC4J API
    findViewObject
    public ViewObject findViewObject(java.lang.String voName)
    Finds the named View Object. The View Object name passed in (voName) may or may not be qualified with the name of the containing Application Module. If it is, the View Object name is said to be an AM-qualified View Object name. If not, the name is said to be an unqualified View Object name.
    How do I modify the SQL query by appending a where clause?Use the method setWhereClause in the ViewObject class
    From BC4J API
    setWhereClause
    public void setWhereClause(java.lang.String cond)
    Sets a WHERE clause bind value of the View Object's query statement.
    I can not find an example in the docs. If there is, please tell me where.I could not find an example in the docs for getting a ViewObject from the ApplicationModule, but I found one for
    Creating and Changing View Object Queries in Code
    Once again this is what I found and have not tested it yet. I believe it will work, but comments from the JDeveloper team would be appreciated.
    Regards,
    Bill

  • URGENT: executeQuery after setWhereClause causes infinite loop

    Hi,
    - I'm using jdev 9.0.3.2.
    - I have a JTable bound to a ViewObject.
    - I set the vo's whereClause, the where clause has some syntax error.
    - I call executeQuery
    - The JBO exception is shown.
    - I press ok.
    BUT:
    - The JBO exception is called again and again, the reason is getEstimatedRowCount called again and again by the repaint event.
    I noticed the following code in JUIteratorBinding :
    public void executeQuery()
    synchronized(getSyncLock())
    if (mIsAlive && mIsBound)
    try
    getRowSetIterator().getRowSet().executeQuery();
    catch(Exception ex)
    reportException(false /*markDead*/, ex);
    reportException(false -> means do not markDead
    is this OK?
    Please help.
    Thanks Ognian

    You're hitting a reported bug 3090348
    A known workaround is to reset the erring clause after execute and exception like:
    private void setWhereClause_actionPerformed(ActionEvent e)
    //here it starts
    JUIteratorBinding ib=panelBinding.findIterBinding("EmpView1Iter");
    try {
    ib.getApplication().setErrorHandlerActive(false);
    ib.getViewObject().setMaxFetchSize(100);
    ib.getViewObject().setWhereClause("empno = xxx"); //the where clause
    is intentional wrong!!
    ib.executeQuery(); //one JBO exception is OK, but not an endless loop
    until a stack overflow happens!
    catch (JboException je)
    ib.getViewObject().setWhereClause(null);
    ib.getApplication().setErrorHandlerActive(true);
    panelBinding.reportException(je);
    ib.executeQuery();
    //set a breakpoint here and go inside execute query
    - this reports the exception once...

  • ADF BC + ADF Faces: How can consult a ViewObject in a backing bean.

    Hello comunity i'm new in ADF tecnology, need to consult a VO in a backing bean code, but these are not instances in page definition.
    Thanks Comunity.

    Hi Peter you can consult your aplication module and all VO including inside using these code:
    String amDef = "model.AppModuleImpl";
    String config = "AppModuleLocal";
    String retorno = "";
    ApplicationModule am = Configuration.createRootApplicationModule(amDef,config);
    ViewObject myVO = am.findViewObject("YourVO");
    Then you can filter your VO if you need
    myVO.setWhereClause("id = : 0");
    myVO.setWhereClauseParam(0, var);
    myVO.executeQuery();
    And iterate by the results
    while (myVO.hasNext()) {
    myVO.next();
    Row myRow = myVO.getCurrentRow();
    Number id= (Number)myRow .getAttribute("Id");
    Good Luck

  • ADF ViewObject Clarifications

    Hello,
    I'm facing strange behaviours in ADF viewobject. I have a viewobject PropertyView1. I need to list the properties only for a particular user. And also within that , I need to display based on the property status.
    So I have a dataaction (DA1) which binds to a app module function ,
    ViewObject vo = getPropertyView1();
    vo.setWhereClause(" Property.USERID = :1 ");
    vo.setWhereClauseParam(0,new Long(uid));
    vo.executeQuery();
    This sets the view object to display only the properties of a particular user. This DA1 forwards to a datapage (DP1) on "Success", The DP1 contains the ADF Read-Only table for the propertyview1 view instance.
    I have another function which should display only the "new" properties for a particular user.
    Another data action (DA2) which contains the function,
    ViewObject vo = getPropertyView1();
    vo.setWhereClause(" Property.PROPSTATUS = :1 and Property.LAGENT = :2 ");
    vo.setWhereClauseParam(0,status1);
    vo.setWhereClauseParam(1,new Integer(uid));
    vo.executeQuery();
    This displays the user properties which are "New". Similar to the first data action, DA2 -> DP2 on success.
    The following Sequence of actions gives strange behaviours every time,
    1. Execute the first dataaction (DA1) . It works properly , Provides me with correct list of properties.
    2. Execute Second dataaction (DA2). There are no rows which match the criteria. So I get "No Records Found" in Dp2.
    3. execute first data action again, It provides me No records found as well as Errors.
    The errors are,
    " Bind variable does'nt exist"
    Somehow there are two bind parameters set for DA1, while there is only one bind parameter in my where clause. And this happens only on the second time. I'm able to ececute DA1 correctly on the first time.
    Also, Pelase let me know if I Have two create two view instances for these types of queries. Or Is there a way to revert back to all the rows originally in the propertyview1 view object (The view object has no where clauses in the definition), after executing the DA2 or DA1 dataction. I hope i was clear in the above questions.
    Thanks a lot.

    Just a guess: call vo.setWhereClauseParams(null) before setting new parameters.
    From the VO API Doc:
    Note that calling setWhereClause() does not clear the previous settings of WHERE clause parameters. To reset WHERE clause parameters in the middle tier, call ViewObjectImpl.setWhereClauseParams(Object[]) explicitly with a null value. For example:
    vo.setWhereClauseParams(null);

  • Where to call a ViewObject's setWhereClauseParam() ?

    Simple question:
    Where to set a where clause param for a ViewObject defined at design time?
    I have the VO as Read-only form on a DataPage, and I want
    to show a different row based on a HttpRequest parameter send to the DataPage. For example, show the employee with id=?, having EmployeeVO and HttpRequest parameter 'id'.

    Check out this how-to for a sample of how to do it.
    http://www.oracle.com/technology/products/jdev/tips/shmeltzer/setwhereclause/index.html

  • Dynamically set ViewObject where clause dynamically from Java bean

    I have a requirement to display all of the records from a table when the JSP is first brought up, so my View Object looks like this:
    "select emp_name from emp"
    Then the users wants to ability to pass paramters to that View Object to refine the list so from by Java class I tried to do this:
    ViewObject vo = cpd.findViewObject("EmpViewObject");
    vo.setWhereClause("empName = :1");
    vo.setWhereClauseParam(1,varEmpName);
    vo.executeQuery();
    But I am getting JBO errors and I'm not sure what I'm doing wrong. Can anyone offer a hint as to how I can do this?

    this is exactly how the code is done -
    1. emp_name in the View Object
    2. emp_name in the where clause
    The two are identical. I have tried many variations of this - any time I set the where clause from my bean I get an error.
    When I take the SQL stmnt and run it in TOAD it returns expected rows when I run it in the SQL worksheet in JDev it gives an invalid Identifier - but if I hard code the where clause in the View Object it returns the same results as TOAD.

Maybe you are looking for