Entity Object and Seqence

There is a confusion about DBSequence in Entity Object. I've defined an entity object named Employee and its primary key is Gkey. I've chosend DBSequence as its attribute type (Update While New) and overode doDML method as follows:
<code>
protected void doDML(int operation, TransactionEvent e) {
if (operation == DML_INSERT) { 
SequenceImpl seq =
new SequenceImpl("seq_employees_gkey", getDBTransaction());
Integer n = new Integer(seq.getSequenceNumber().intValue());
super.setAttribute(GKEY, new DBSequence(n));
super.doDML(operation, e);
</code>
Its working fine. Whenever I insert a new row in my JClient form, Gkey fields shows blank and when I commit the transaction, next seqence no. automatically comes in.
But when I use Integer or Long as the data type of Gkey instead of DBSequence it didn't make any difference. and was working fine. So what is the exact purpose of DBSequence ?
Secondly, I defined a child Entity Object for the above EO. I defined a ParentGkey column and defined its attribute type Integer and in parent EO, GKey data type was defined as DBSeqeunce. So when I map Parent's Gkey agains Child ParentGKey column to define association, assocation wizard gives a mismatch attribute type error because parent's attribute type was DBSequence and Child type was Integer.
Regards
Aamir

Dear Shailesh,
I didn't override create() method, I overrode the doDML method. I've come to know, by reading previous postings, taht although DBSequence relies on database trigger but overrding doDML method is an alternative to database trigger.
However what I asked here is that JDev team says that framework assigns a unique temporary value to the field that has DBSequence domain, then why I dont see this temporary value in Tester and in my JClient form.The tests I've run with DBSequence does show the negative/temporary DBSequence value in the tester. Do you see the attribute with no-value in the tester or the attribute does not show up at all - which would be the case if the attribute's control-hint indicates it should be a hidden field.
Second thing I asked is that if the field using DBSequence has to be referred as a foreign key in an association then what should be the type of this field in the child EntityObject. If we set this field in child EO as Integer it gives a type mismatch error.That was a bug in JDev 903P. Should be fixed in JDev 903 production.
Hope you will understand my question.
Muhammed Aamir

Similar Messages

  • Managing Entity Object and PL/SQL transactions

    Hi,
    I have requirement to use entity objects and PL/SQL API in the same transaction.
    First the data is created in the entity object and then API is called to do some validations on the data created through entity object.
    I am not able to fetch the rows created by the entity object in the PL/SQL API until I issue a commit before calling the API.
    Can anyone suggest me how to get the data in PL/SQL API which was created by the entity object without commit. As I want to have a commit only after API returns true.
    Thanks in advance

    Override the beforeCommit method of the main entity object of your page.
    The commit will only take place if the PLSQL does not throw any errors.
    See example below:
    public void beforeCommit(oracle.jbo.server.TransactionEvent e) {
    methodToCheckUsingPLSQL();
    super.beforeCommit(e);
    private void methodToCheckUsingPLSQL() {
    try {
    String sql =
    "BEGIN check_my_entity(p_id => :1" +
    ", x_return_status => :2" +
    ", x_return_msg => :3); END;";
    OracleCallableStatement stmt =
    (OracleCallableStatement)getDBTransaction().createCallableStatement(sql,
    DBTransaction.DEFAULT);
    // Rebind parameters
    stmt.setNUMBER(1, getId());
    stmt.registerOutParameter(2, Types.VARCHAR); //x_return_status
    stmt.registerOutParameter(3, Types.VARCHAR); //x_return_msg
    stmt.executeUpdate();
    String returnStatus = stmt.getString(2);
    String returnMsg = stmt.getString(3);
    if (!"SUCCESS".equals(returnStatus)) {
    throw new OAException(returnMsg);
    } catch (Exception e) {
    throw new OAException("Error during methodToCheckUsingPLSQL. " +
    e.getMessage());
    Regards,
    Jeroen Kloosterman

  • Edit entity object and use the Create() method for generating ID's

    Hello,
    I have and InserPage.jsp and defined the datasoucre correctly.
    <jbo:InputText datasource="ds" dataitem="Clientid" /> gives me
    the unique ClientID from the FIRST client-record in my table ,
    although this page is for inserting a NEW Client, with a new
    ClientID.
    So, on the Clients Entity i made a create() method and put the
    following code in it:
    public Number getClientid() {
    return (Number)getAttributeInternal(CLIENTID);
    public void create(AttributeList attributeList) {
    SequenceImpl seq = new SequenceImpl
    ("Clientid",getDBTransaction());
    Integer i=(Integer)seq.getData();
    setClientid(new Number(i.intValue()));
    super.create(attributeList);
    the getData() Returns a sequence value, but what sequence value?
    Do i have to create a sequence on the ClientID column in my
    Oracle Table in the DB too?
    The problem is, the first ClientID # is 819 and the current last
    one seems to be 2899, so how do i achieve that when opening the
    insert.jsp the new ClientID shows up (ie. 2900)?
    How can i achieve this?
    thx

    OK, managed to track down the HowTo on triggers? I created the
    trigger.
    create sequence client_seq
    start with 8900
    increment by 1
    nomaxvalue
    nocycle;
    I changed the create() method for the entity object to:
    public void create(AttributeList attributeList) {
    SequenceImpl seq = new SequenceImpl
    ("Clientid",getDBTransaction());
    SequenceImpl s = new SequenceImpl("client_seq",
    getDBTransaction());
    Integer next = (Integer)s.getData();
    setClientid(new Number(next.intValue()));
    and running the tester for the module works fine. ;-)
    But...
    The Insert.jsp page has to insert/show this sequenced value!
    After i defined the datasource and let us say:
    <jbo:InputText datasource="ds" dataitem="Clientid" />
    ...the number 819 shows up, which is the FIRST record, so i do
    not get the new ClientID with the correct number.
    Any help is always nice. ;-)

  • Calling stored procedures from entity object and application module

    Hello
    I've put in place an EntiyImpl base class containg helper methods to call stored procedures.
    I now need to call stored procedures from the application module.
    Apart from creating an application module base class and duplicating the helper method code is there a way
    to share the helper methods for calling stored procedures between the entity impl and application module impl ?
    Regards
    Paul

    Does the helper code depend on features of a particular entity object instance, beyond its database transaction?
    If so, I'm not sure I see how it could be used from an application module class.
    If not, here's what you do:
    Step 1:
    Parametrize the database transaction--you might even want to. So instead of
    protected myHelperMethod(Object someParam) {
    DBTransaction trans = getDBTransaction();
    change this to
    protected myHelperMethod(DBTransaction trans, Object someParam) {
    Step 2: make the method public and static--once you parameterize the DBTransaction, you should be able to do this.
    public static myHelperMethod(DBTransaction trans, Object someParam) {
    Step 3: Remove the method from your EntityImpl base class into a utility class:
    public abstract class PlSqlUtils {
    private PlSqlUtils() {}
    public static myHelperMethod(DBTransaction trans, Object someParam) {
    When you want to call the method from an application module, entity object, or even view object class, call
    PlSqlUtils.myHelperMethod(getDBTransaction(), paramValue);
    Unlike Transaction.executeCommand(), this lets you provide functionality like setting procedure parameter values, retrieving OUT parameter values, etc.
    Hope this helps,
    Avrom

  • Error while creating new entity object.

    Hi all
    I'm using Jdev 11.1.1.3. I want to create an entity object and Jdev issues an information error saying "Either this is not a valid name or an object with that name already exists."
    I found that if the package I'm targeting for the new entity is called "com.test.model.whatever" I cannot create a EO called "Whatever".
    I can't find any reference in the fusion developer guide that constraints the entity names to be allowed.
    Is there a way to circumvent this issue or is this the way it should be?

    Sudipto and Suresh, thank you very much for your replies.
    I know that changing the package or entity name would work, but was expecting some other kind of workaround, something like giving a full qualified name on some xml or something to avoid the name clash or whatever the problem is.
    I do not like packing all the entities together as it goes against my best practice of packing things that change together on the same package. Also I don't like suffix or prefix class names as it goes against my best practice of short descriptive names.
    So well, I will have to tinker the names some more and meet you guys half way.
    I will now mark this thread as answered, thanks again.

  • Dynamic Creation of Entity Objects (ADF Business Components)

    Hi All,
    We have a requirement to create Entity Objects for the dynamically generated tables in our application and at the same time bind them to different views.
    Our product create multiple tables at runtime with some sort of naming convention, and we couldn't find a way in JDeveloper to generate entity objects for the tables created dynamically.
    Please provide some pointers if you have experienced or worked on similar requirement.
    Thanks,
    Nikhilesh

    Thanks for the help Sudipto.
    The link which you have shared, describes the creation of an entity object and then modify the operations like Delete Update and Insert etc to be performed on the entity object by creating IMPL classes and implementing certain interfaces.
    But I need to create Entity objects dynamically. My application creates new tables for some functionality at the run time and I have to create Entity objects for those new tables as soon as the new tables are created.
    I was just wondering if, there is any API available for creating the entity object from Java code instead of invoking the wizard in the Jdeveloper.

  • How to add row in multiple view object based on common entity object.

    Hi ,
    I have
    Jdeveloper version - 10.1.3.3.0
    Oracle Database - 11g R2
    I have a situation where i have to show data from one table in three adf tables on jsf page depending on a flag value in a column in table. For this purpose i have done the following steps
    a) Created an entity object on the database table .
    b) Created three view objects on this entity object and edited the view object's SQL and included the where clause
                       WHERE  A.USER_PERSONAL_NO = :P_USER_PERSONAL_NO AND
                           A.AUTH_TYPE = 'LF'
                       The auth_type cloumn decided in which view object the data will be shown
    Now, when i query the data from database by executing the query of these view objects the data is shown correctly in all three view objects. Till here there seems every thing ok
    Now , i have to provide the logic to add records in the adf tables for this i have provided add button in action facet of all three tables which are binded to methods in managed bean,
    when i add a record in a adf table by add button the new row which is created is shown in all three tables . I cant understand why this is happening , please help me to solve this problem.
    How can i make it possible so that the record appears only in that adf table in which the record is added.
    The method for adding record is
                Row rw = currentAM.getWfRecommAuths().createRow();
                rw.setAttribute("UserPersonalNo",this.getQuery_personal_no().getValue());
                rw.setAttribute("AuthPersonalNo","");
                rw.setAttribute("AuthType","LX");
                currentAM.getWfRecommAuths().last();
                currentAM.getWfRecommAuths().insertRow(rw);
               Please help , thanks in advance.

    Hi,
    have a look at polymorphic view objects
    http://download.oracle.com/docs/cd/E21764_01/web.1111/b31974/bcadvvo.htm#CEGDCCCB
    Frank

  • Adf bc jar for base entity classes and extending them existing  project

    Hi,
    I am using jdev 11.1.1.0 and have created a base workspace/project and adf jar for my base entity classes.
    1. I can consume this base adf bc jar in a separate new consuming workspace and create VO based on base bc classes or create new EOs that extend base bc entity classes.
    2. Furthermore, for an existing consuming project that earlier included src/ of base entity (BC components), i can remove the dependency on bc source and bring in this new adf jar and everything including the view controller and the service/datacontrol works fine.
    The issue i am running into is as follows.
    - In the existing project (#2) above i try to create a couple of entities based on entities in my base jar; associations are automatically brought in. Note i am not overriding any attributes. My intent here is to generate .java and implement some code.
    - I then try to make my existing VOs based on the newly extended entity (VO overview->Entity Objects-> Shuttle NewEntity from Available to Selected)
    - I then try to remove the old EO from selected under VO overview->Entity Objects->Shuttle OldEntity from Selected back
    - I get a warning dialog box that says something to the effect that some viewlinks are dependent on these old EOs in this consuming project.
    - I tried to laboriously analyzed dependencies and it this dialog box does not make any sense as I have already extended EOs and the tooling should be able to let me use these
    My questions
    - Why I am not able to remove old entities from VO dependencies
    - Is it ok to leave the old EOs in "Selected" along with the newly extended EO ? What are the implications for this?
    - I also thought about extending base associations, but did not go anywhere.
    In general, I am ok with consuming an ADF BC jar that has entities etc. but not clear about removing dependencies of base EOs on VOs when entities are extended and consumed in a pre-existing project that used base entities.
    I can send a project if any PM is willing to take a look at it.
    Thanks,
    ps:
    I have already gone over the following info
    http://technology.amis.nl/blog/215/organization-of-bc4j-domain-eo-and-business-vo-package
    .. wants to create an enterprise data model in BC4J, reflecting the Enterprise Data Model set up in the RDBMS. All (or at least most) business rules will be implemented in the Middle Tier – to take the load of the database and also allow developers not comfortable with PL/SQL to define and maintain the business rules. It is clear that this means that all applications that need to access – and manipulate – the database, need to go through the BC4J foundation layer. Martijn wants to define the Entity Objects – and their business rules – only once and share that definition between different projects. Each projects can create its own ViewObjects on top of these shared Enterprise Entity Objects.
    http://radio-weblogs.com/0118231/2005/09/29.html
    I am currently working on a project for a partner where we will be using ADF BC as our model layer for a large application. In order to keep the footprint of each application module down to a reasonable size, we are intending to create a number of separate 'root' application modules for each functional area of the application. Within, these 'root' application modules we will then use nested application modules to further partition the application. All of the application modules will be accessing the same datasource and will need access to the same database objects.
    In order to separate our code between the development team and into function areas, our initial thoughts were that we would create an ADF BC model project containing Entity Objects for all of the database tables e.t.c. as these are common amongst all functional areas. We have configured all of the EOs for validation rules, defaulting values and extending doDML() as appropriate. Happy at this stage we then created a simple .jar file to deploy all of the definitions. Upon creating a new ADF BC project for each functional area we added the jar file as a library import into the new project. However when we the tried to create some new View Objects via the JDev Wizard we were unable to see the imported Entity Objects.
    Is the only way to share Entity Object definitions between different ADF BC projects to manually copy the source definition files into the new projects src directory? Since this would mean multiple copies of the same components, it could prove to be a maintenance nightmare.Is there a way of doing it without creating multiple copies of the same object definitions?
    The developer is spot on in their ideas of layering and reuse, and even has created a library for their reusable entities. This last step is not something everyone thinks to do. The missing step is known as "importing" components, so with that one extra bit of knowledge under his belt, he should be able to do exactly what he envisions. My little article called Difference Between Adding and Importing Business Components tries to explain the difference and gives the menu options to choose to perform the importing.
    Difference between adding and importing BC4J
    http://radio-weblogs.com/0118231/stories/2005/08/11/differenceBetweenAddingAndImportingBusinessComponents.html
    Working with Libraries of Reusable Business Components
    http://download.oracle.com/docs/cd/B32110_01/web.1013/b25947/bcadvgen.htm#CHEFECGD

    Hi,
    since you followed the OC4J developer guide I think this question might be better handled there as well
    OC4J
    So in case you don't get an answer here on the forum, try it on the OC4J forum
    Frank

  • Synchronize with Database on Entity Object re-creates Association

    hi
    Please consider this example application created using JDeveloper 11.1.1.4.0
    at http://www.consideringred.com/files/oracle/2011/MovedAssociationApp-v0.01.zip
    It has an EmpManagerFkAssoc Association which has been moved from the "movedassociationapp.model.entities" package to the "movedassociationapp.model.assoc" package (using the "Refactor - Move..." context-menu option).
    When selecting "Synchronize with Database..." in the context-menu of the Employees Entity Object, and clicking the "Synchronize All" button, this results in JDeveloper re-creating the EmpManagerFkAssoc Association,
    as shown in the screencast at http://screencast.com/t/l7jaoU2C
    - (q1) Is this Association re-creation intended behaviour (if so, please explain, if not, which bug number)?
    many thanks
    Jan Vervecken

    Ferez,
    have you seen this thread in the ADF forum, Cannot 'Synchronize with database' my entity objects ?
    It mentions the existence of a bug that may cause this (though no reference number), and one user posted a workaround they were using.

  • Specifying autoincrement on a field in an entity object declaratively

    Hi,
    I have a master-detail window where the detail entity has a composite key made up of m_id and d_id where m_id is a foreign key to the master table and d_id is the unique key to the detail table.
    I have defined the detail entity object and checked the box for m_id and d_id as a primary key. When I create a new detail object using the create button that is available from the data control panel for the detail's view object it populates the m_id based on the currently selected master object. However since d_id needs to be populated as well.
    Any ideas how I can do this declaratively in then entity object definition?
    Cheers,
    S

    This can be done with programmatic VOs: http://download.oracle.com/docs/cd/E15523_01/web.1111/b31974/bcadvvo.htm#sm0341
    Sample: http://blogs.oracle.com/smuenchadf/examples/#132
    You can also opt to do this with a simple Java class and a data control based on it.
    For example: http://blogs.oracle.com/shay/2009/07/java_class_data_control_and_ad.html

  • View all rows in Entity object

    please I have a problem can I one help me
    I want to get all rows from specific Entity object
    example
    I am now in validate method in XXX Entity Object and i want to get all the rows in XXX table from validate method(all rows)
    can any one help me to do that
    thanks in advance

    ya sire
    I want from validate method in EO XXX to validate all the rows in the table XXX
    so I want to get all the rows from validate methods in the EO XXX
    thanks in advance

  • Problem to give default value in entity object using query

    hi,
    i have one entity object and i want to set default value of attribute like division which is based on employee code.
    entity object based on table leavedetail and using refrence table employee_hdr(empcode ,division).
    so how can i set default value of division attribute which is based on empcode attribute using SQL

    well,
    yes user, fetish nailed correctly.
    make some viewlink.
    something like says as example.
    department vo
    employee vo
    make viewlinks between those vo's
    important thing: exposed then source and destination accesor.
    use groovy :
    go to employee vo - create Department name field ( as transiest)
    use this statement default value expersion type.
    DepartmentView1.DepartmentName
    it will get the value. check over.
    so this example well suits to your scenario.
    i hope this will helps you.
    well create is an video. to get the value using groovy.
    http://www.youtube.com/watch?v=mpHV4x89a_A
    Edited by: ADF7 on Apr 14, 2012 5:46 AM

  • Creating Views on multiple entity-objects

    Dear Forum,
    Is it possible to make associations and lookups based on multiple entity-objects.
    I made a custom view, say view1 based on two entity-objects, say entity1 and entity2.
    I used some fields from entity1 and some from entity2. There's a 1 to 1 association between the index of entity1 and entity2.
    Now I want to make a master-detail between entity1 and view1. I tried to make links and associations, but that didn't work.
    Any ideas?
    Kind regards,
    Arjen

    Arjen,
    I am a bit confused by what it is you need. It appears you may have Entity Object and View Objects mixed up. Entity Objects are one-to-one with database tables. So, for every table one Entity Object, and the other way around. Associations are, pretty much, one-to-one with foreign keys on the database. So, if two tables have a foreign key between them, the two Entity Objects will have an Association between them. In that respect, Entity Objects and Associations are usually 'strictly defined' by the database model.
    The layer of View Objects and View Links is where you 'get design control' in the Business Components arena. A View Object can be based on zero, one or more Entity Objects. Viewlink, defining 'Master-Detail' relationships between View Objects (and NOT Entity Objects!!) can but don't have to be based on Entity Associations (i.e. foreign keys), but can be based on any attribute in the 'Master' view to any attribute in the 'Detail' view.
    In this respect, your statement that you want to "make a master-detail between entity1 and view1" makes no sense. It sounds like you need to create a View2, and then make a View Link between View1 and View2.
    Kind regards,
    Peter Ebell
    JHeadstart Team

  • Primary key in Entity Objects. How?

    Hi!
    I'm using Jdeveloper 9.0.3.3. I have a table with primary keys: CliId and Id. I make an entity object and choose primary key option for Cliid and Id in the entity. Now i make an viewObject from the entity object. In the viewObject, there are 2 key attribute: Cliid and Id. Now i'm generating with Jdeveloper 9.0.3.3 a standard uix page and i want to update a record, but it doesn't works. I become a bc4j error message: 'begin insert into....'.
    In the UIX code i made the rowDef autocreate="true":
    <bc4j:viewObjectDef name="CnedViewUsage" rangeSize="1">
    <bc4j:rowDef autoCreate="true" "CurrentCnedViewUsage">
    <bc4j:propertyKey name="key">
    </bc4j:propertyKey>
    </bc4j:rowDef>
    </bc4j:viewObjectDef>
    so
    if the propertyKey can't catch bc4j rowkey form url, it makes a new row. There is the problem...why doesn't catch the the propertyKey the bc4j key form the url? If i check out CliId primary key from entity and key attribute from ViewObject, it begins to work.. But in the database they together are primray keys.. Has anyone an idea?
    Thanks: Gabz

    Does your ViewObject use more than one entity? If so, then the Key that you are using in the ViewObject probably contains the key attributes of each Entity. You can go to the attributes section of the ViewObject Wizard and click off any "Key" checkboxes for attributes that aren't a part of your "primary" Entity.
    Mark

  • HOWTO: Expose Entity Object Methods to Clients

    By design, clients cannot directly access entity objects. The view object layer provides an extra layer of security--you can choose exactly what data and methods you want clients to see.
    This HOWTO describes the process of exposing an entity object method to client programs.
    First, if you don't already have one, you must base a view object on your entity object and add the view object to your data model. For full details of how to do this, see the help topics under
    +Developing Business Components
    --Working with View Objects, View Links, Application Modules, and Clients
    +----Creating and Modifying View Objects, View Links, Application Modules, and Clients
    For the purposes of this HOWTO, we'll assume that you already have an entity object, Employees, with a method on it, calculateBonus(),
    and a view object EmployeesView based on Employees.
    First, you must generate a view row class. A view row represents one row of the view object's cache; it corresponds to a view of a particular entity object.
    To generate a view row class:
    1. Right-click EmployeesView and choose Edit.
    2. In the View Object Editor, select the Java page.
    3. Select Generate Java File and Generate Accessors for the view row class.
    4. Click Done. This creates a class called EmployeesViewRowImpl.
    Next, you should add a "delegator" method to the view row class--a public method with the exact same signature as the entity method, that simply calls the entity method. For example:
    public int calculateBonus(int rating) {
    return getEmployees().calculateBonus(rating);
    Next, you should export this method.
    1. Right-click EmployeesView and choose Edit.
    2. In the View Object Editor, select the Client Row Methods page.
    3. Shuttle the method you just created into the Selected list and click Done.
    This creates an interface called EmployeesViewRow that contains your method.
    Now you can call the method from your client. You should cast the row returned by EmployeesView.current(), the <jbo:Row> tag, or a similar method or data tag to EmployeesViewRow.
    For example,
    <jbo:Row id="myRow" datasource="ds" action=Current>
    <% out.println(((EmployeesViewRow) myRow).calculateBonus(3)); %>
    </jbo:Row>
    null

    Hi Lisa,
    There's a difference between exporting methods (on an application module, view object, and view row--this is done on the "Client Methods" tab of the view object and application module wizards and the "Client Row Methods" tab of the view object wizard) and making an application module remotable (which is done on the "remote" tab of the application module wizard).
    You should always export methods you want clients to use--and you only need to do this on the application module if you've written methods on your application module (which I didn't in this HOWTO). You can still use these methods in local mode--the interfaces will be present locally. The advantage of exporting methods is that it doesn't lock you into local mode--you'll be able to change to remote mode later (if you decide that's the way to go) with minimal changes--because the interfaces will be present locally even when the implementation classes aren't.
    By contrast, you should only make an application module remotable if you're planning on deploying in a non-local configuration. You can do this step right before deployment.
    Hope this helps,
    Avrom
    null

Maybe you are looking for

  • Cannot delete messages from the Drafts folder in Mail.

    I am running Mail 2.1.3. For some reason I am no longer able to delete draft messages from my Drafts folder. It is by no means a serious problem, just annoying! Can anyone figure this out? Thanks.

  • How can I get the values of the selected row in the report?

    Hi All: I have a dynamic query(lexical parameters)that columns are selected at the run time. And depend on the values, I'd like to do another query just for certain row. For example, when I double click on the fifth column of the fifth row. I'd like

  • Database help

    Hi everyone, i need to create a new database in oracle exprees edition 11g and then conected it to sql developer for oracle but am not sure how to do it I mean I know how to make a conecction from sql to my user into oracle database but how can I mak

  • How too remove log in password

    Hi all. Can you please help me as iam well and truly stock now I had too reinstall my software on the mini now i put the re install software that it came with and i filled all the forms out including my password which never changes in all my mac's th

  • String object to Date object

    Hi, I have date as string object "22/04/2008". I want convert this string object to Date object as specified format (dd/MM/yyyy) only. Please do the need full. Thanks in Advance