Customize af:query form based on ejb entity data control

Hi all,
on my application i have a simple table with an af:query form to search data.
One of the requirements is to have one of the search criteria be displayed and filled depending on certain conditions.
For example :
if the user has a certain role, the field should be read-writable but not filled so that the user can specify whatever he wants.
otherwise the value of the criteria should be something like the username but not be displayed (or at worse read only). Of course in the later case the user couldn't also add in when using the advanced query option.
How can i achieve this ? Do i have to write a custom QueryModel or could i retrieve the one via #{bindings.ImplicitViewCriteriaQuery.queryModel} and browse this object to remove/update the criteria ? Is there a clean declarative approach to this use-case rather than programmatic ?
I tried the second solution (not sure if it's the cleanest way) but at some point i end up with a ConcurrentModificationException when removing the criterion from the ConjuctionCriterion list.
any idea ?
btw i'm on jdev 11.1.1.5.0
thanks
-regards
Julien.

Well, the databound query created a sql where clause which is added to the base sql statement. If you don't have a VO where should the where clause been added to?
The view criteria are also more like a dynamic where clause and I don't think you can easily mimic the framework is you don't have a VO behind it.
Timo

Similar Messages

  • Query forms based on detail block

    My question is pretty simple: Is it possible to query a form (Forms [32 Bit] Version 6.0.8.11.3) based on a detail block? Let me explain my problem! I have a table called REQUISITION and of its field is STATUS_CODE. Then I have another table called STATUS that have the following fields: CODE, NAME, DESCRIPTION, PHASE, etc. The join condition between REQUISTION and STATUS is REQUISITION.STATUS_CODE = STATUS.CODE. On my form, all of the fields come from table REQUISITION but the problem is that we have over 30 different status and my user can't remember their names and phase. So I inserted two display fields on the forms and wrote a post-query trigger to populate the field with their corresponding names and phases. But now my end user are complaining that the fields don't allow queries to be performed which prevents them to use a query to know all requisitions that are on phase "Procurement" which corresponds to four different status_code. So I though in inserting the fields PHASE and DESCRIPTION into table REQUISITION and write a trigger that would populate those field every time the STATUS change but that would cause a problem when lets say STATUS 01 is part of PHASE "Procurement" then comes next week the company decides that is not longer part of phase "Procurement" but now it is part of PHASE "Purchasing" they would go the form based on table STATUS and change the field PHASE of the corresponding STATUS that they want. But now I have this data on another table holding information that is no longer valid. Sure I could write another trigger to change field REQUISITION.STATUS_PHASE whenever there is a change on STATUS.PHASE but wouldn't that be too much bookkeeping? Would be so much easier if I could query my forms based on the detail block (this case table STATUS and master block table REQUISITION)?
    thanks so much in advance for any thought! Btw, I am open to other suggestions too!!!!!
    gleisson henrique

    if I understood you correctly, you can do this manually. what I mean is,
    when the end user picks phase "Purchasing", you can change the where clause on the master block and execute the query to get the desired results
    e.g.
    v_cod varchar2(200) := 'STATUS_CODE in (select code from status where phase = ''Purchasing'')';
    begin
    set_block_property(requisition_blk,default_where,v_cod);
    execute_query;ofcourse you have to change "Purchasing" in the previous code to the item that holds the user inputs
    hope this is helpful
    Edited by: Mohammed H. on Sep 19, 2008 6:45 PM

  • How to make a jsf parameter form with a selectOneChoice and data control

    I want to make a parameter form with a selectOneChoice and store this value in a backing bean, so I can use as a bind variable in query. I already made it happen without data control
    Can someone show how to do it in adf data control. With the wizard it tries put the value
    in a viewobject but I don't have base or destination viewobject. I can change the pagedef
    so it works to fill the selectOneChoice but then I want to store the selected value in a session beab
    here is solution with the application module and request / session bean, I don't
    think it is the right solution
    thanks edwin
    jsf page
    <af:selectOneChoice label="Desk" value="#{selectDesk.desk}"
    id="DeskID"
    binding="#{selectDesk.deskBinding}"
    autoSubmit="true"
    valueChangeListener="#{selectDesk.deskChangeListener}">
    <f:selectItems value="#{selectDesk.deskSelectItems}"/>
    </af:selectOneChoice>
    Selektdesk backing bean
    public SelectDesk(){
    FacesContext facesContext = FacesContext.getCurrentInstance();
    ValueBinding valueBinding = facesContext.getApplication().createValueBinding("#{userInfo}");
    userInfo = (UserInfo) valueBinding.getValue(facesContext);
    public List<SelectItem> getDeskSelectItems() {
    if ( userInfo.getSelectItems() != null ) {
    selectItems = userInfo.getSelectItems();
    return selectItems;
    if ( getBindings() != null ) {
    userInfo.setBindings( getBindings());
    else {
    setBindings(userInfo.getBindings()) ;
    if ( selectItems == null ) {
    selectItems = new ArrayList<SelectItem>();
    DCBindingContainer bc = getBindings();
    SicmaService sicma = (SicmaService)bc.findDataControl("SicmaServiceDataControl").getDataProvider();
    ViewObject desk = sicma.findViewObject("DeskSelectView1");
    desk.executeQuery();
    RowSet rows = desk.getRowSet();
    while (rows.hasNext()) {
    Row a = rows.next();
    String DskId = a.getAttribute(0).toString();
    String DskOms = a.getAttribute(1).toString();
    selectItems.add( new SelectItem(DskId ,DskOms ));
    rows.closeRowSet();
    userInfo.setSelectItems(selectItems);
    return selectItems;
    faces-config.xml
    <managed-bean>
    <managed-bean-name>selectDesk</managed-bean-name>
    <managed-bean-class>org.tennet.sicma.view.backing.SelectDesk</managed-bean-class>
    <managed-bean-scope>request</managed-bean-scope>
    <managed-property>
    <property-name>bindings</property-name>
    <property-class>oracle.adf.model.binding.DCBindingContainer</property-class>
    <value>#{bindings}</value>
    </managed-property>
    </managed-bean>

    The SRDemo has an example of a selectOneRadio bound to a parameter being used to pass to an ExecuteWithParams action (to automatically feed a view object's named bind variable. This is in the SRStaffSearch.jspx page.
    Also, if you check out example # 72 from my blog:
    http://radio.weblogs.com/0118231/stories/2004/09/23/notYetDocumentedAdfSampleApplications.html#72
    There is another example of using a selectOneListbox to do the same type of thing.
    The steps involved in creating something like this are to:
    (1) Define your named bind variables on your view object
    (2) Drop the "ExecuteWithParams" action in the operations folder of that view object from the Data Control Palette to your page as a "Parameter Form"
    (3) Drop the specific attribute (nested child of the "ExecuteWithParams" action from step (2) as whatever kind of selectOneXXXX control you want
    (4) Delete the extra field on the form you don't want.

  • Mobile app based on web service data control and VO with VC runtime error

    Hi,
    Jdev 11.1.2.3.0 + mobile extension.
    Windows 7, 64 bit.
    Reproduceable with Android emulator but not on iOS and iOS emulator.
    I can not test on real Android device because we do not have it in our office.
    So I don't know wether this issue is related to android emulator only or to android in general.
    Also not reproduceable by Oracle support.
    I have a VO "Employees" with a VC "department_id = :departmentIdVariable" and exposed the find method for this VO via service interface in AM.
    (see demo video from https://blogs.oracle.com/shay/entry/developing_with_oracle_adf_mobile?utm_source=dlvr.it&utm_medium=facebook).
    In a ADF mobile app I create a parameter form and amx:listView like demoed in the mentioned video.
    Whenever I test this app on android emulator I get the error below.
    Exact the same page used in a second feature works fine.
    I found out that the problem only occures on the first attept (this means when I open the page on the second feature first then this will fail and the subsequent call of the first page will be successfull).
    The problem does not occure when the web service data control does not contain a method based on VC with bind variable.
    [SEVERE - oracle.adfmf.framework - AmxBindingContext - loadDataControlById] Unable to load Data Control testDataControl due to following error: ERROR [oracle.adfmf.framework.exception.AdfException] - Unable to load definition for testDataControl.Types.findEmployeesView1DepartmentIdCriteria.findCriteria.childFindCriteria.findAttribute.
    ERROR [oracle.adfmf.framework.exception.AdfException] - Unable to load definition for testDataControl.Types.findEmployeesView1DepartmentIdCriteria.findCriteria.childFindCriteria.findAttribute
    at oracle.adfmf.metadata.bean.transform.TransformCacheProvider.fetch(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;(Unknown Source)
    at oracle.adfmf.cache.SimpleCache.get(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object;(Compiled Method)(Unknown Source)
    at oracle.adfmf.metadata.cache.MetaDataCache.getByLocation(Ljava/lang/String;)Loracle/adfmf/util/XmlAnyDefinition;(Unknown Source)
    at oracle.adfmf.metadata.cache.MetaDataFrameworkManager.getJavaBeanDefinitionByName(Ljava/lang/String;)Loracle/adfmf/metadata/bean/JavaBeanDefinition;(Unknown Source)
    at oracle.adfmf.dc.VirtualJavaBeanObject.registerAccessorAttribute()V(Unknown Source)
    at oracle.adfmf.dc.JavaBeanObject.registerJavaBean(Loracle/adfmf/metadata/bean/JavaBeanDefinition;)V(Unknown Source)
    at oracle.adfmf.dc.VirtualJavaBeanObject.<init>(Ljava/lang/String;Ljava/lang/String;Loracle/adfmf/metadata/bean/JavaBeanDefinition;Ljava/lang/String;)V(Unknown Source)
    at oracle.adfmf.dc.VirtualJavaBeanObject.<init>(Ljava/lang/String;Ljava/lang/String;Loracle/adfmf/metadata/bean/JavaBeanDefinition;)V(Unknown Source)
    at oracle.adfmf.dc.VirtualJavaBeanObject.registerAccessorAttribute()V(Unknown Source)
    at oracle.adfmf.dc.JavaBeanObject.registerJavaBean(Loracle/adfmf/metadata/bean/JavaBeanDefinition;)V(Unknown Source)
    at oracle.adfmf.dc.VirtualJavaBeanObject.<init>(Ljava/lang/String;Ljava/lang/String;Loracle/adfmf/metadata/bean/JavaBeanDefinition;Ljava/lang/String;)V(Unknown Source)
    at oracle.adfmf.dc.VirtualJavaBeanObject.<init>(Ljava/lang/String;Ljava/lang/String;Loracle/adfmf/metadata/bean/JavaBeanDefinition;)V(Unknown Source)
    at oracle.adfmf.dc.VirtualJavaBeanObject.registerAccessorAttribute()V(Unknown Source)
    at oracle.adfmf.dc.JavaBeanObject.registerJavaBean(Loracle/adfmf/metadata/bean/JavaBeanDefinition;)V(Unknown Source)
    at oracle.adfmf.dc.VirtualJavaBeanObject.<init>(Ljava/lang/String;Ljava/lang/String;Loracle/adfmf/metadata/bean/JavaBeanDefinition;Ljava/lang/String;)V(Unknown Source)
    at oracle.adfmf.dc.VirtualJavaBeanObject.<init>(Ljava/lang/String;Ljava/lang/String;Loracle/adfmf/metadata/bean/JavaBeanDefinition;)V(Unknown Source)
    at oracle.adfmf.dc.VirtualJavaBeanObject.registerAccessorAttribute()V(Unknown Source)
    at oracle.adfmf.dc.JavaBeanObject.registerJavaBean(Loracle/adfmf/metadata/bean/JavaBeanDefinition;)V(Unknown Source)
    at oracle.adfmf.dc.ws.WebServiceObject.registerBean(Loracle/adfmf/metadata/dcx/AdapterDataControlDefinition;Loracle/adfmf/metadata/dcx/soap/SoapDefinitionDefinition;)V(Unknown Source)
    at oracle.adfinternal.model.adapter.webservice.WSDefinition.loadDataControlDefinition(Loracle/adfmf/metadata/dcx/AdapterDataControlDefinition;)V(Unknown Source)
    at oracle.adfmf.dc.GenericJavaBeanDataControlAdapter.loadDataControl(Ljava/lang/String;)V(Unknown Source)
    at oracle.adfmf.dc.ws.WebServiceDataControlAdapter.setDataProvider(Ljava/lang/Object;)V(Unknown Source)
    at oracle.adf.model.adapter.DataControlFactoryImpl.createDataControl(Loracle/adfmf/bindings/dbf/AmxBindingContext;Loracle/adfmf/util/XmlAnyDefinition;Ljava/util/Map;)Loracle/adfmf/bindings/DataControl;(Unknown Source)
    Does anyone has seen the above error ?
    I have recreated the model and mobile app more than 20 times, re-installed Jdev, re-created Jdev settings (integrated WLS & Co), ran the web services on a different machine.
    On my site this problem is 100% reproduceable with android emulator.
    regards
    Peter

    Hi, Peter, this could be an issue with proxy server setting. Are you behind a firewall when you test this?
    iOS simulator would use Mac's proxy setting. Android Emulator has its own proxy setup - it's a bit complicated to get to and varies based on the Android emulator you are using. For 4.1 emulator (you should always use 4.x or above emulators), you would need to go into the emulator itself, and go to settings - Wireless & Networks - click More... - Mobile Networks - Access Point Names. You should see an Access point used by the emulator to simulate network connection. Mine says "T-Mobile US". You click on it, and then you can select the proxy attribute and set it according to your office's settings.
    Hope that resolves the issue.
    Thanks,
    Joe Huang

  • ADF forms based on BPM human tasks - Invoking webservices/view objects.

    Hi All,
    Is anyone aware of whether the following is a valid implementation that has been carried out before.
    1. ADF forms based on BPM 11G human tasks.
    2.The ADF forms invoke webservices via Webservice data controls. It is pertinent to note that the webservice bring back complex data types. We've tried writing a few forms, resulting in data benig brought back, but not being able to print them to the screen.
    3. The ADF forms also use View Object based on sql to bring back tables of data. If view objects are embedded within the forms, the applciation gives rise to a null pointer exception.
    Considering the form will be invoked via a BPM worklist entry, is there a setting or configuration we should consider before hand. Is this feasible, is there knowledge of this being done commercially.
    Any examples or information regarding the same will be immensely helpful.
    Thanks and Regards,
    Preethi.
    NB : I have posted this in the BPM forum as well as I feel it is relevant to both BPM and ADF.

    Hi Joonas.
    Plese let me explain me better for your understanding
    A big summary for what I meant it's the following:
    1- In the procces you made, when you add the HT activity, you have to implement it, this means declare the input(s) parameters you want. This implementation create the .task file.
    2- Create an application, and projects as HT you have. Each poject are based on the .task file, and automatically create a Data Control (for each project based on a .task) with all you need.
    This w'll be an empty application, so you can customize it all you want. The task selected should have all the parameters previously defined. Those parameters can change if you want.
    2- Create a page(s) in the task flow for the task implementation. You can even split the the payload of the task in differents pages, create your custom pages and any logic you need.
    3- An important aspect is how to match these application with the HT implemented in the process. It's possible, it's a configuration en the Enterprise Manager.
    4- Deploy your application
    All these are explain in the book I mentioned
    Th book you can find it here:
    https://blogs.oracle.com/soacommunity/entry/oracle_soa_suite_11g_handbook_1
    Regards Dariel.
    PS: Please, let me know if you need more details.

  • Form based authentication -- control URGENT PLS.

    I am following Form based authentication. I have a login page. I have specified the security constraints in the web.xml.
    I would like to know after the execution of login where will the controller go to?? will it go the controller servlet, followed by an action class??
    For any typical event (such as create customer)---the following has been the flow:
    controller servlet--> createAction-->createUserBD (business delegate) --> customerManagerEJB --> customerDAO;
    Now in case of login..
    After the execution of login (authentication is by form based authentication ) where will the controll go to?
    My requirement is to store the logged in userID details in Stateful Session bean. how will the flow look like?

    If the access is through a web invocation, control will go to whichever portion of the web app triggered
    the security constraint. The ejb has no knowledge of the authentication. If you want to provide the
    login details to the ejb you'll have to explicitly pass them from the web tier.
    --ken                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   

  • Query form in oravle forms builder 6i

    i have two tables
    the first one is master table it has many items (has twoitems primary key type number )
    the second table has only three items (two items foreign key to the first block(master table )) and the last item is
    is blob item
    i build query form such as
    first i build control block has two item (not database table )
    then i build first master block
    finally i build second table
    i joined them with the two items
    the picture not appeard when i execute query
    how i can solve it

    Does the query return records in your first block? In your second block?

  • Form based authentication -- controller --- URGENT PLS.

    I am following Form based authentication. I have a login page. I have specified the security constraints in the web.xml.
    I would like to know after the execution of login where will the controller go to?? will it go the controller servlet, followed by an action class??
    For any typical event (such as create customer)---the following has been the flow:
    controller servlet--> createAction-->createUserBD (business delegate) --> customerManagerEJB --> customerDAO;
    Now in case of login..
    After the execution of login (authentication is by form based authentication ) where will the controll go to?
    My requirement is to store the logged in userID details in Stateful Session bean. how will the flow look like?

    where will the controller go to?? wherever you program it to go to?

  • EJB, JPA E MANAGED BEAN WITHOUT DATA CONTROL

    How do I build a simple crud with no EJB without data controls. Exposing the methods of my bean class.
    Who can help me thanks.
    Edited by: 941064 on 15/06/2012 14:48

    You'll write managed beans that access your EJB service facade.
    You can use @EJB injection to get this working.
    http://biemond.blogspot.co.uk/2010/04/ejb-injection-in-jsf-managed-bean.html

  • Add a form (based on query) to a form (based on table)

    I have a normal form based on a table. I want to put in a little form in a region of this first form that is based on a query. They have one field in common.
    How can I do this?
    Elsie

    Hi Elsie,
    Effectively, you want to end up with a single form and save the data back into two or more tables?
    If so, you could base the entire form on a SQL view and use an INSTEAD OF trigger to update the underlying tables.
    Regards
    Andy

  • Forms based on query?  Is it possible in Oracle Portal?

    here is my code that i want to use
    SELECT a.first, a.last, b.Position_CD, c.skill_cd, d.team_name, d.team_country, d.club, e.structure_name
    FROM Roster a, Roster_position b, roster_skill c, team d, team_structure e
    where (a.Roster_ID = b.roster_id (+) and (b.roster_id = c.roster_id (+) ) and (a.team_cd = d.team_cd(+)) and (a.team_structure_cd = e.team_structure_cd (+)))
    order by a.roster_id;
    Is it possible for oracle portal to support such a query in a form?
    Oracle portal supports single tables or views...master-detal...and forms based on procedures.
    Since the above query associates with moro then one table..how might one create a form based on that query? Is their a way in oracle portal to create a form and have its record source be based on such a complex query and be able to update and insert data? I know and have tested that it works in Ms Access and i can update and add data in that above query. Hopefully oracle supports this. (*cross fingers*)
    If i cant do what i said above...what advice or suggestions you guys have for me? If i use master-detail it won't work right because i need to involve all 5 tables.
    Any help or comments are greatly appreciated!

    When i made the above query a view and created an oracle portal form. I get this error when I try to retrieve all the records in that view i made above.
    An unexpected error occurred: ORA-01445: cannot select ROWID from a join view without a key-preserved table (WWV-16016)
    What does the "key-preserved table" mean?

  • How do I open up a form based on a query/parameter

    Can someone please tell me how can I open the form based on a query and the query is based on a pre-set value. Thanks.
    I am new to Oracle Form. Please treat me like a newbie. Thanks.

    Hi,
    If I understand u , you want to call a form
    and execute query automatically with preset value.
    Is that what you mean?.
    1.suggestion: You can use the call_form, or open_form .
    check all parameters like "auto query" and so on.
    (see help-online for parameters to pass for call_form, open_form....)
    2.Suggestion: In the pre-query trigger set the value.
    in the When-new-form-instance
    write this code:
    Begin
    execute_query; -- built-in procedure
    end;
    I hope this gives you an idea,
    Regards
    CB

  • Performing form based authentication with entities

    Hey everyone,
    Im in a major dilemma.Im trying to perform form-based authentication using entities.I have created the entity class from the database,and I used a SLSB to access the bean method via JNDI(when I tried using dependency injection,there was an exception).I also cannot use hibernate as a persistent provider.I used toplink since it is the default in netbeans 5.5.1 and it did not raise any issues.But then,I noticed that toplink is most compatible with the oracle application server,and I use sun java system application server 9.1.I have not been able to successfully perform the authentication.
    here's the code:note,there are still bugs as ive been going back and forth trying to find a solution and also because Ive been working with preexisting code.
    model:
    SLSB
    * userValidationBean.java
    * Created on 26 March 2008, 18:25
    * To change this template, choose Tools | Template Manager
    * and open the template in the editor.
    package Entities;
    import javax.ejb.Stateless;
    import javax.ejb.Remote;
    import java.util.List;
    import javax.persistence.PersistenceContext;
    import javax.persistence.EntityManager;
    import javax.persistence.Query;
    import Entities.UserTable;
    import javax.transaction.UserTransaction;
    import javax.annotation.Resource;
    //the reason for the many comments is that im still debugging and there are still some bugs.Ive also been trying to go back and forth just
    //to get a solution.
    //the other accompanying classes had preexisting code i wrote earlier.
    * @author Ayo
    @Stateless
    @Remote(userValidationRemote.class)
    public class userValidationBean implements Entities.userValidationRemote {
    @PersistenceContext private EntityManager manager;
    @Resource private javax.transaction.UserTransaction tran;
    /** Creates a new instance of userValidationBean */
    public userValidationBean() {
    //"SELECT u.username,u.password FROM UserTable u WHERE u.username =?1 and u.password=?2"
    public boolean checkUser()
    try
    tran.begin();
    UserTable user=new UserTable();
    Query query=manager.createQuery("select u.username,u.password from u.user_table where u.username=:username and u.password=:password");
    /*query.set("username",user.getUsername());
    query.setParameter("password",user.getPassword());*/
    query.setParameter("username",user.getUsername());
    query.setParameter("password",user.getPassword());
    userValidationBean ubean=(userValidationBean)query.getSingleResult();
    boolean result=ubean==null?true:false;
    tran.commit();
    catch(Exception e)
    System.out.println("Error:"+e);
    // boolean result=ubean==null?true:false;
    return result;
    remote interface
    package Entities;
    import javax.ejb.Remote;
    import Entities.UserTable;
    * This is the business interface for userValidation enterprise bean.
    @Remote
    public interface userValidationRemote {
    public boolean checkUser();
    controller:servlet
    * userCheck.java
    * Created on 15 March 2008, 22:41
    package servlets;
    import Entities.UserTable;
    import Entities.userValidationBean;
    import javax.annotation.*;
    import Entities.userValidationRemote;
    import java.io.*;
    import java.net.*;
    import java.sql.*;
    import javax.servlet.*;
    import javax.servlet.http.*;
    import javax.ejb.*;
    import javax.naming.*;
    import javax.persistence.*;
    * @author Ayo
    * @version
    public class userCheck extends HttpServlet {
    //@EJB userValidationRemote userRemote;
    boolean checkUser;
    String username,password;
    /** Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods.
    * @param request servlet request
    * @param response servlet response
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
    /*con=null;
    ps=null;
    rs=null;
    s=null;
    */response.setContentType("text/html;charset=UTF-8");
    PrintWriter out = response.getWriter();
    username=request.getParameter("username");
    password=request.getParameter("password");
    if(username==""||password=="")
    //RequestDispatcher de=request.getRequestDispatcher("admin_error.jsp");
    //de.forward(request,response);
    //showError("<b><font color=\"red\">Invalid Login details!</font></b>",request,response);
    showError("<b><font color=\"red\">Please fill in the required blanks.</font></b>",request,response);
    else
    try
    Context ctx=new InitialContext();
    userValidationRemote userRemote=(userValidationRemote)ctx.lookup("Entities.userValidationRemote");
    checkUser= userRemote.checkUser();
    //checkUser= userRemote.checkUser();
    //return;
    //checkUser(UserTable user);
    catch(Exception e)
    out.println("Error:"+e);
    //userValidation.checkUser(UserTable user);
    if(checkUser==true)
    RequestDispatcher d=request.getRequestDispatcher("blah.jsp");
    d.forward(request,response);
    else if(checkUser==false)
    // RequestDispatcher d=request.getRequestDispatcher("admin_error.jsp");
    //d.forward(request,response);
    showError("<b><font color=\"red\">Invalid Login details!</font></b>",request,response);
    //call bean(stateless or stateful)which access method on entity that validates.
    // checkUser(request,response);
    /* TODO output your page here
    out.println("<html>");
    out.println("<head>");
    out.println("<title>Servlet userCheck</title>");
    out.println("</head>");
    out.println("<body>");
    out.println("<h1>Servlet userCheck at " + request.getContextPath () + "</h1>");
    out.println("</body>");
    out.println("</html>");
    //out.close();
    /* public synchronized void checkUser(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException
    if(username==""&&password=="")
    showError("<b><font color=\"red\">Please fill in the required blanks.</font></b>",request,response);
    else
    try
    Class.forName("com.mysql.jdbc.Driver");
    con=DriverManager.getConnection("jdbc:mysql://localhost:3306/Health_Management_System","root","");
    ps=con.prepareStatement("select username,password from user_table where username=?and password=?");
    ps.setString(1,username);
    ps.setString(2,password);
    rs=ps.executeQuery();
    if(rs.next())
    user=rs.getString(1);
    pass=rs.getString(2);
    //check user type,wether super admin,user or the other subadmins or a regular user.
    checkType(request,response);
    else
    //redirect to admin error page,then close the connection.
    showError("<b><font color=\"red\">Invalid Login details.</font></b>",request,response);
    con.close();
    catch(Exception e)
    private synchronized void checkType(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException
    try
    Class.forName("com.mysql.jdbc.Driver");
    con=DriverManager.getConnection("jdbc:mysql://localhost:3306/Health_Management_System","root","");
    ps=con.prepareStatement("select user_type,user_id,access_level from user_table where username=? and password=?");
    ps.setString(1,user);
    ps.setString(2,pass);
    rs=ps.executeQuery();
    if(rs.next())
    user_type=rs.getString(1);
    user_id=""+rs.getInt(2);
    access_level=rs.getString(3);
    if(user_type.equals("super")&&(access_level.equals("all")))
    //create admin user session,add to the username and the user_id.
    //redirect to super admin page,with access rights to create
    //health admin,insurance admin and HMO admin.
    //pretty cool stuff!
    HttpSession session=request.getSession(true);
    session.setAttribute("user",user);
    session.setAttribute("user_id",user_id);
    RequestDispatcher dispatcher=request.getRequestDispatcher("admin_user_page.jsp");
    dispatcher.forward(request,response);
    //session.setAttribute(user_id);
    //remember to create a hidden field if you need to pass this information
    //to another page and retrieve the super admin id to track his activities.
    else if(user_type.equals("health administrator")&&(access_level.equals("Health")))
    HttpSession session=request.getSession(true);
    session.setAttribute("user",user);
    session.setAttribute("user_id",user_id);
    RequestDispatcher des=request.getRequestDispatcher("health_admin_user_page.jsp");
    des.forward(request,response);
    //check for other user types,health admin,hmo admin and insurance admin.
    else if(user_type.equals("hmo administrator")&&(access_level.equals("HMO")))
    HttpSession session=request.getSession(true);
    session.setAttribute("user",user);
    session.setAttribute("user_id",user_id);
    RequestDispatcher d=request.getRequestDispatcher("hmo_admin_user_page.jsp");
    d.forward(request,response);
    showError("<b><font color=\"red\">Invalid Login details.</font></b>",request,response);
    else if(user_type.equals("insurance administrator")&&(access_level.equals("insurance")))
    HttpSession session=request.getSession(true);
    session.setAttribute("user",user);
    session.setAttribute("user_id",user_id);
    RequestDispatcher de=request.getRequestDispatcher("insurance_admin_user_page.jsp");
    de.forward(request,response);
    else if(user_type.equals("user")&&(access_level.equals("health")))
    try
    Class.forName("com.mysql.jdbc.Driver");
    con=DriverManager.getConnection("jdbc:mysql:http://localhost:3306/Health_Management_System","root","");
    ps=con.prepareStatement("select staff_id from user_table where username=?and password=?");
    ps.setString(1,username);
    ps.setString(2,password);
    rs=ps.executeQuery();
    if(rs.next())
    String staff_id=""+rs.getInt(1);
    Class.forName("com.mysql.jdbc.Driver");
    con=DriverManager.getConnection("jdbc:mysql://localhost:3306/Health_Management_System","root","");
    ps=con.prepareStatement("select * from health_staff_table where staff_id=?");
    ps.setString(1,staff_id);
    rs=ps.executeQuery();
    if(rs.next())
    //retrieve the values from health staff and store them in variables.
    //store important variables in user sessions e.g.staff_id,username,place of work for display in the web page.
    //redirect to required page.
    String first_name=rs.getString("first_name");
    String last_name=rs.getString("last_name");
    String work_place=rs.getString("place_of_work");
    HttpSession session=request.getSession(true);
    session.setAttribute("first_name",first_name);
    session.setAttribute("last_name",last_name);
    session.setAttribute("work_place",work_place);
    session.setAttribute("staff_id",staff_id);
    //redirect to user page.
    else
    showError("<b><font color=\"red\">Invalid Login details.</font></b>",request,response);
    else
    showError("<b><font color=\"red\">Invalid Login details.</font></b>",request,response);
    catch(Exception e)
    //catch exception and redirect to page.
    else if(user_type.equals("user")&&(access_level.equals("HMO")))
    try
    Class.forName("com.mysql.jdbc.Driver");
    con=DriverManager.getConnection("jdbc:mysql:http://localhost:3306/Health_Management_System","root","");
    ps=con.prepareStatement("select staff_id from user_table where username=?and password=?");
    ps.setString(1,username);
    ps.setString(2,password);
    rs=ps.executeQuery();
    if(rs.next())
    String staff_id=""+rs.getInt(1);
    Class.forName("com.mysql.jdbc.Driver");
    con=DriverManager.getConnection("jdbc:mysql://localhost:3306/Health_Management_System","root","");
    ps=con.prepareStatement("select * from hmo_staff_table where staff_id=?");
    ps.setString(1,staff_id);
    rs=ps.executeQuery();
    if(rs.next())
    //retrieve the values from HMO staff and store them in variables.
    //store important variables in user sessions e.g.staff_id,username,place of work for display in the web page.
    //redirect to required page.
    String first_name=rs.getString("first_name");
    String last_name=rs.getString("last_name");
    String work_place=rs.getString("place_of_work");
    HttpSession session=request.getSession(true);
    session.setAttribute("first_name",first_name);
    session.setAttribute("last_name",last_name);
    session.setAttribute("work_place",work_place);
    session.setAttribute("staff_id",staff_id);
    else
    showError("<b><font color=\"red\">Invalid Login details.</font></b>",request,response);
    else
    showError("<b><font color=\"red\">Invalid Login details.</font></b>",request,response);
    catch(Exception e)
    //catch exception and redirect to page.
    else if(user_type.equals("user")&&(access_level.equals("insurance")))
    try
    Class.forName("com.mysql.jdbc.Driver");
    con=DriverManager.getConnection("jdbc:mysql:http://localhost:3306/Health_Management_System","root","");
    ps=con.prepareStatement("select staff_id from user_table where username=?and password=?");
    ps.setString(1,username);
    ps.setString(2,password);
    rs=ps.executeQuery();
    if(rs.next())
    String staff_id=""+rs.getInt(1);
    Class.forName("com.mysql.jdbc.Driver");
    con=DriverManager.getConnection("jdbc:mysql://localhost:3306/Health_Management_System","root","");
    ps=con.prepareStatement("select * from insurance_staff_table where staff_id=?");
    ps.setString(1,staff_id);
    rs=ps.executeQuery();
    if(rs.next())
    //retrieve the values from insurance staff and store them in variables.
    //store important variables in user sessions e.g.staff_id,username,place of work for display in the web page.
    //redirect to required page.
    String first_name=rs.getString("first_name");
    String last_name=rs.getString("last_name");
    String work_place=rs.getString("place_of_work");
    HttpSession session=request.getSession(true);
    session.setAttribute("first_name",first_name);
    session.setAttribute("last_name",last_name);
    session.setAttribute("work_place",work_place);
    session.setAttribute("staff_id",staff_id);
    else
    showError("<b><font color=\"red\">Invalid Login details.</font></b>",request,response);
    else
    showError("<b><font color=\"red\">Invalid Login details.</font></b>",request,response);
    catch(Exception e)
    //catch exception and redirect to page.
    else
    //invalid login details.After all else fails.
    showError("<b><font color=\"red\">Invalid Login details.</font></b>",request,response);
    catch(Exception e)
    private void showError(String errorMsg,HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException
    request.setAttribute("error_msg",errorMsg);
    RequestDispatcher dispatcher=request.getRequestDispatcher("admin_error.jsp");
    dispatcher.forward(request,response);
    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
    /** Handles the HTTP <code>GET</code> method.
    * @param request servlet request
    * @param response servlet response
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
    processRequest(request, response);
    /** Handles the HTTP <code>POST</code> method.
    * @param request servlet request
    * @param response servlet response
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
    processRequest(request, response);
    /** Returns a short description of the servlet.
    public String getServletInfo() {
    return "Short description";
    // </editor-fold>
    view
    <%@ page contentType="text/html; charset=utf-8" language="java" import="java.sql.*" errorPage="" %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Login</title>
    <style type="text/css">
    <!--
    .style3 {     color: #000000;
         font-family: Arial, Helvetica, sans-serif;
         font-size: 12px;
    .style1 {color: #0000FF}
    .style4 {
         color: #0000FF;
         font-size: 12px;
    .style5 {
         font-size: 12px
    .style6 {
         color: #FF0000;
         font-size: 12px;
    .style7 {
         font-size: 36px
    .style8 {color: #000000}
    -->
    </style>
    </head>
    <body>
    <table width="564" border="0" align="center">
    <tr>
    <td width="558" bgcolor="#CCCCCC" class="style1"><div align="center">
    <p> </p>
    <h1 class="style7">Welcome to HealthPort</h1>
    <p>HealthPort Login</p>
    <p><span class="style8">Today's date is:<%= new java.util.Date() %></span></p>
    <form id="form1" name="form1" method="post" action="userCheck">
    <p align="right" class="style3">Username
    <label></label>
    <input type="text" name="username" id="username" />
    </p>
    <p align="right" class="style3">Password
    <input type="password" name="password" id="password" />
    </p>
    <p align="right" class="style3">
    <span class="style6">
    <label></label>
    <label></label>
    </span>
    <span class="style5">
    <label></label>
    </span>
    <label>
    <input type="submit" name="button" id="button" value="Login" />
    </label>
    </p>
    <div align="right">
    </div></form>
    <div align="right"><div align="left"><p align="right"> </p>
    </div></div></div></td>
    </tr>
    <tr>
    <td bgcolor="#CCCCCC" class="style1"> </td>
    </tr>
    </table>
    </body>
    </html>
    so,that's about it.I'd appreciate it.I know this is a lot.I'm grateful
    Ayo.

    Hi.Im still having issues trying to perform form based authenticatin with entities.I tried this method but im getting errors on the marked lines.
    controller servlet
    * userCheck.java
    * Created on 15 March 2008, 22:41
    package servlets;
    import Entities.UserTable;
    import Entities.userValidationBean;
    import javax.annotation.*;
    import Entities.userValidationRemote;
    import java.io.*;
    import java.net.*;
    import java.sql.*;
    import javax.servlet.*;
    import javax.servlet.http.*;
    import javax.ejb.*;
    import javax.naming.*;
    import javax.persistence.*;
    * @author Ayo
    * @version
    public class userCheck extends HttpServlet {
    //@EJB userValidationRemote userRemote;
    boolean checkUser;
    String username,password;
    /** Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods.
    * @param request servlet request
    * @param response servlet response
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
    /*con=null;
    ps=null;
    rs=null;
    s=null;
    */response.setContentType("text/html;charset=UTF-8");
    PrintWriter out = response.getWriter();
    username=request.getParameter("username");
    password=request.getParameter("password");
    if(username==""||password=="")
    showError("<b><font color=\"red\">Please fill in the required blanks.</font></b>",request,response);
    else
    try
    Context ctx=new InitialContext();
    userValidationRemote userRemote=(userValidationRemote)ctx.lookup("Entities.userValidationRemote");
    (error on this line-saying ')' expected and no matter if i add ) there is still erro)userRemote.authenticate(String p_user,String p_password);
    catch(Exception e)
    out.println("Error:"+e);
    if(checkUser==true)
    RequestDispatcher d=request.getRequestDispatcher("blah.jsp");
    d.forward(request,response);
    else if(checkUser==false)
    showError("<b><font color=\"red\">Invalid Login details!</font></b>",request,response);
    private void showError(String errorMsg,HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException
    request.setAttribute("error_msg",errorMsg);
    RequestDispatcher dispatcher=request.getRequestDispatcher("admin_error.jsp");
    dispatcher.forward(request,response);
    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
    /** Handles the HTTP <code>GET</code> method.
    * @param request servlet request
    * @param response servlet response
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
    processRequest(request, response);
    /** Handles the HTTP <code>POST</code> method.
    * @param request servlet request
    * @param response servlet response
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
    processRequest(request, response);
    /** Returns a short description of the servlet.
    public String getServletInfo() {
    return "Short description";
    // </editor-fold>
    view
    <%@ page contentType="text/html; charset=utf-8" language="java" import="java.sql.*" errorPage="" %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Login</title>
    <style type="text/css">
    <!--
    .style3 {     color: #000000;
         font-family: Arial, Helvetica, sans-serif;
         font-size: 12px;
    .style1 {color: #0000FF}
    .style4 {
         color: #0000FF;
         font-size: 12px;
    .style5 {
         font-size: 12px
    .style6 {
         color: #FF0000;
         font-size: 12px;
    .style7 {
         font-size: 36px
    .style8 {color: #000000}
    -->
    </style>
    </head>
    <body>
    <table width="564" border="0" align="center">
    <tr>
    <td width="558" bgcolor="#9DACBF" class="style1"><div align="center">
    <p> </p>
    <h1 class="style7">Welcome to HealthPort</h1>
    <p>HealthPort Login</p>
    <p><span class="style8">Today's date is:<%= new java.util.Date() %></span></p>
    <form id="form1" name="form1" method="post" action="userCheck">
    <p align="right" class="style3">Username
    <label></label>
    <input type="text" name="username" id="username" />
    </p>
    <p align="right" class="style3">Password
    <input type="password" name="password" id="password" />
    </p>
    <p align="right" class="style3">
    <span class="style6">
    <label></label>
    <label></label>
    </span>
    <span class="style5">
    <label></label>
    </span>
    <label>
    <input type="submit" name="button" id="button" value="Login" />
    </label>
    </p>
    <div align="right">
    </div></form>
    <div align="right"><div align="left"><p align="right"> </p>
    </div></div></div></td>
    </tr>
    <tr>
    <td bgcolor="#CCCCCC" class="style1"> </td>
    </tr>
    </table>
    </body>
    </html>
    SLSB (implements userValidationRemote)
    * userValidationBean.java
    * Created on 26 March 2008, 18:25
    * To change this template, choose Tools | Template Manager
    * and open the template in the editor.
    package Entities;
    import javax.ejb.Stateless;
    import javax.ejb.Remote;
    import javax.persistence.PersistenceContext;
    import javax.persistence.EntityManager;
    import javax.persistence.Query;
    import Entities.UserTable;
    import javax.annotation.*;
    //import javax.transaction.UserTransaction;
    * @author Ayo
    @Stateless(mappedName="ejb/facade/userValidationBean")
    @Remote(userValidationRemote.class)
    (error on this line saying can't find class TransactionManagement)@TransactionManagement(value=TransactionManagementType.CONTAINER)
    public class userValidationBean implements Entities.userValidationRemote {
    @PersistenceContext(unitName="HealthInsuranceApp-ejbPU") private EntityManager manager;
    /** Creates a new instance of userValidationBean */
    public userValidationBean() {
    //"SELECT u.username,u.password FROM UserTable u WHERE u.username =?1 and u.password=?2"
    public boolean authenticate(String p_user,String p_password)
    UserTable m_user=manager.find(UserTable.class,p_user);
    if(m_user!=null)
    return m_user.getPassword().equals(p_password);
    return false;
    Entity
    * UserTable.java
    * Created on 29 March 2008, 13:24
    * To change this template, choose Tools | Template Manager
    * and open the template in the editor.
    package Entities;
    import java.io.Serializable;
    import javax.persistence.Column;
    import javax.persistence.Entity;
    import javax.persistence.Id;
    import javax.persistence.Table;
    * Entity class UserTable
    * @author Ayo
    @Entity(name="qs_UserPwd")
    @Table(name = "user_table")
    public class UserTable implements Serializable {
    @Id
    @Column(name = "user_id", nullable = false)
    private Integer userId;
    @Column(name = "username")
    private String username;
    @Column(name = "password")
    private String password;
    @Column(name = "user_type")
    private String userType;
    @Column(name = "access_level")
    private String accessLevel;
    @Column(name = "staff_id")
    private Integer staffId;
    @Column(name = "staff_type", nullable = false)
    private String staffType;
    @Column(name = "time_created")
    private String timeCreated;
    @Column(name = "time_modified")
    private String timeModified;
    @Column(name = "time_logged_in")
    private String timeLoggedIn;
    @Column(name = "time_logged_out")
    private String timeLoggedOut;
    @Column(name = "created_by")
    private String createdBy;
    /** Creates a new instance of UserTable */
    public UserTable() {
    * Creates a new instance of UserTable with the specified values.
    * @param userId the userId of the UserTable
    public UserTable(Integer userId) {
    this.userId = userId;
    * Creates a new instance of UserTable with the specified values.
    * @param userId the userId of the UserTable
    * @param staffType the staffType of the UserTable
    public UserTable(Integer userId, String staffType) {
    this.userId = userId;
    this.staffType = staffType;
    public UserTable(String p_user,String p_password)
    setUsername(p_user);
    setPassword(p_password);
    * Gets the userId of this UserTable.
    * @return the userId
    public Integer getUserId() {
    return this.userId;
    * Sets the userId of this UserTable to the specified value.
    * @param userId the new userId
    public void setUserId(Integer userId) {
    this.userId = userId;
    * Gets the username of this UserTable.
    * @return the username
    public String getUsername() {
    return this.username;
    * Sets the username of this UserTable to the specified value.
    * @param username the new username
    public void setUsername(String p_user) {
    p_user = username;
    * Gets the password of this UserTable.
    * @return the password
    public String getPassword() {
    return this.password;
    * Sets the password of this UserTable to the specified value.
    * @param password the new password
    public void setPassword(String p_password) {
    p_password=password;
    * Gets the userType of this UserTable.
    * @return the userType
    public String getUserType() {
    return this.userType;
    * Sets the userType of this UserTable to the specified value.
    * @param userType the new userType
    public void setUserType(String userType) {
    this.userType = userType;
    * Gets the accessLevel of this UserTable.
    * @return the accessLevel
    public String getAccessLevel() {
    return this.accessLevel;
    * Sets the accessLevel of this UserTable to the specified value.
    * @param accessLevel the new accessLevel
    public void setAccessLevel(String accessLevel) {
    this.accessLevel = accessLevel;
    * Gets the staffId of this UserTable.
    * @return the staffId
    public Integer getStaffId() {
    return this.staffId;
    * Sets the staffId of this UserTable to the specified value.
    * @param staffId the new staffId
    public void setStaffId(Integer staffId) {
    this.staffId = staffId;
    * Gets the staffType of this UserTable.
    * @return the staffType
    public String getStaffType() {
    return this.staffType;
    * Sets the staffType of this UserTable to the specified value.
    * @param staffType the new staffType
    public void setStaffType(String staffType) {
    this.staffType = staffType;
    * Gets the timeCreated of this UserTable.
    * @return the timeCreated
    public String getTimeCreated() {
    return this.timeCreated;
    * Sets the timeCreated of this UserTable to the specified value.
    * @param timeCreated the new timeCreated
    public void setTimeCreated(String timeCreated) {
    this.timeCreated = timeCreated;
    * Gets the timeModified of this UserTable.
    * @return the timeModified
    public String getTimeModified() {
    return this.timeModified;
    * Sets the timeModified of this UserTable to the specified value.
    * @param timeModified the new timeModified
    public void setTimeModified(String timeModified) {
    this.timeModified = timeModified;
    * Gets the timeLoggedIn of this UserTable.
    * @return the timeLoggedIn
    public String getTimeLoggedIn() {
    return this.timeLoggedIn;
    * Sets the timeLoggedIn of this UserTable to the specified value.
    * @param timeLoggedIn the new timeLoggedIn
    public void setTimeLoggedIn(String timeLoggedIn) {
    this.timeLoggedIn = timeLoggedIn;
    * Gets the timeLoggedOut of this UserTable.
    * @return the timeLoggedOut
    public String getTimeLoggedOut() {
    return this.timeLoggedOut;
    * Sets the timeLoggedOut of this UserTable to the specified value.
    * @param timeLoggedOut the new timeLoggedOut
    public void setTimeLoggedOut(String timeLoggedOut) {
    this.timeLoggedOut = timeLoggedOut;
    * Gets the createdBy of this UserTable.
    * @return the createdBy
    public String getCreatedBy() {
    return this.createdBy;
    * Sets the createdBy of this UserTable to the specified value.
    * @param createdBy the new createdBy
    public void setCreatedBy(String createdBy) {
    this.createdBy = createdBy;
    * Returns a hash code value for the object. This implementation computes
    * a hash code value based on the id fields in this object.
    * @return a hash code value for this object.
    @Override
    public int hashCode() {
    int hash = 0;
    hash += (this.userId != null ? this.userId.hashCode() : 0);
    return hash;
    * Determines whether another object is equal to this UserTable. The result is
    * <code>true</code> if and only if the argument is not null and is a UserTable object that
    * has the same id field values as this object.
    * @param object the reference object with which to compare
    * @return <code>true</code> if this object is the same as the argument;
    * <code>false</code> otherwise.
    @Override
    public boolean equals(Object object) {
    // TODO: Warning - this method won't work in the case the id fields are not set
    if (!(object instanceof UserTable)) {
    return false;
    UserTable other = (UserTable)object;
    if (this.userId != other.userId && (this.userId == null || !this.userId.equals(other.userId))) return false;
    return true;
    * Returns a string representation of the object. This implementation constructs
    * that representation based on the id fields.
    * @return a string representation of the object.
    @Override
    public String toString() {
    return "Entities.UserTable[userId=" + userId + "]";
    please what do I do? or is there a better way? seems like my appserver(sun java system app server 9.1)doesnt support dependency injection as
    there's always an exception in the server log when i try it.i use the default transaction provider toplink because use of any of the others raises an exception and my application index page never shows. please i need help? I want to be able to succesfully perform this authentication as its the only way i can move to the next level
    Ayo.

  • Problem with 2 View Objects based on One Entity -Probably a Bug in ADF BC

    Hi
    I am using JDeveloper 10.1.3(SU5) and adf faces and ADF BC and to explain my problem I use HR schema.
    First, I created 2 view objects based on countries table named as TestView1 and TestView2. I set TestView1 query where clause to region_id=1 and TestView2 query where clause to region_id!=1 in the view object editor and then I created 2 separated form on these 2 view objects by dragging and dropping from data control palette.
    Now when I insert a record in the form based on TestView1 with region_id set to 1 and commit the record and go to the next form I can see the record in the second form which is completely wrong since it is against the where clause statement of the second form.
    I am really confused and the situation is very wired and it seems to me something like bug in adf bc.Am I right.Is there any work around or solution for solving this problem.
    Any help would be highly appreciated.
    Best Regards,
    Navid

    Dear Frank,
    Thank you very much for your quick response.
    Reading your helpful comments now I have some questions:
    1- I have commited the record in the database so shouldn't the query of view objects be re-queried?
    2- We try to use ClearVOCaches (entity_name,false) in afterCommit of the base entity object but unfortunately it does not work correctly. after that,We got root app module and used findViewObject method to find all the view of that entity (we have found them by using name not automaticlly) and called executeQuery of all views. From my point of view it has 2 big disadvantages. First suppose that this entity is an important entity and 4 or 5 viow objects are based on it. Now, For inserting one record we should re-execute 4 or 5 view which I think makes some performance issues. Besides, If during the development one programmer add a new view object based on this entity and don't add the executeQuery in the afterCommit for this view, again we have the same problem. Isn't there at least a way that automatically refresh all related view objects however the performance issue still exists.
    3- You mentioned that this issue is handled in the developer guide. Could you kindly give me a refrence which developer guide you mean and which section I should read to overcome this problem.(I have ADF Developer's Guide for Forms/4GL Developer's Guide , however I search for clearVOCaches and surprisingly nothing was found!!!)
    4- Could you please give me some hints that from your point of view what is the best method to solve this problem with minimum performance effect.
    Any comment would be of some great help.
    Thanks in advance,
    Navid

  • EJB entity beans and BC4J

    I have looked at BC4J and it looks good. Buy my question is that isn't this frame work in direct conflict with EJB entity beans. I know lot of stuff that is there in BC4J should have been in EJB enitiy beans, but as a developer why should I go with BC4J and not the standard EJB stuff considering the fact that BC4J is properietery to Oracle?Any thoughts?

    Vimal,
    Without going into exhaustive detail here, I would like to recommend that you take a look at the BC4J Technical White Paper available from the JDeveloper page on OTN (in the 3.0 Technical Information section):
    http://technet.oracle.com/products/jdev/info/techwp20/wp.html
    Amoung other things to note, BC4J is based on pure Java, and is what we consider a 'white box', meaning, you as a developer have complete control over what is going on. You can extend any of the code generated to customize it.
    Primarily though, the major benefit of BC4J is that we have taken care of most of the complicated communication code for you. Communication between the client and the data server, transaction handling, row locking, etc are already written for you. You just use, extend, customize what we have provided.
    In addition, BC4J allows you flexibility in your deployment environment decision. Regardless of where and how you deploy your BC4J Application Module, the client is unchanged.
    Those are the key advantages. Again, for more details, I would take a look at the white paper to see if it more fully addresses your questions.

Maybe you are looking for