JOINED inheritance; no primary key joins being generated?

I'm working with the Sun Application Server version 9. I'm using the javax.persistence APIs in conjunction with EJB3. I've told the app server to generate tables automatically (via toplink; I've set it to drop-and-create tables).
I have a three-level-deep inheritance hierarchy (like Person extends Party extends BaseObject). BaseObject has its @Inheritance strategy set to JOINED. Everything comes out OK, but I am not seeing any foreign keys being created between the subclass primary keys.
That is, there is no foreign key that enforces that a Person's PK must refer to a Party's PK, which must, in turn, refer to a BaseObject's PK.
I've also tried using the @PrimaryKeyJoin annotation, but that doesn't seem to affect the outcome.
So far this is not a big deal, but I'd like to know if it is a bug in Glassfish/Sun App Server or whether this is by design.
Thanks,
Laird

OK,
My apologies it seems in the aim of simplifying the explanation of what is
occuring I missed some important pieces of information. It seems as though
the redundant joins are only occuring when do a mapping that contains a
constant value.
ie
<field name="classB">
<jdbc-field-map type="one-one" column.columnA="columnA"
column.columnB="XXXXXXXX" />
</field>
And looking at the Section 7.5 of the reference manual the SQL generated
has the redundant join also. Can someone explain why the join is necessary
in these circumstances. All the values of the join columns in tableB are
known, so why does tableA need to be referenced at all?

Similar Messages

  • Problem in universe while joining as the primary key is NUMBER

    Hi,
    I'm trying to join TEST.SUMMARY.NUMBER to TEST.RESPONSE.FOREIGN_KEY. The problem arises from the first of these, as the primary key is in a column NUMBER. Stupid? Definitely. Rename? Not an option.
    I think NUMBER is seen as a magic word (type), and once parsing (for example in "edit join", I get the message "Exception: DBD, ORA-01747: invalid user.table.column, table.column, or column specification State: N/A" .
    Normally putting " around the word would do the trick ("NUMBER"), but is seems universe designer removes those during the parsing (?). I come to this conclusion, because if I choose the join line from the graphical menu, and then write to the function line TEST.SUMMARY."NUMBER"=TEST.RESPONSE.FOREIGN_KEY (and press enter), the " are removed. (To get the NUMBER's to the report is good, though, by creating a variable with TEST.SUMMARY."NUMBER")
    The database is oracle, and universe is on BusinessObjecs XI 3.1.  I've tried to join in the edit join, create a derived table and use ANSI92. No good so far. I also tried to join the fields on report (WebI), but the result was always too many or not enough data from one of the tables. Merging dimensions leads to other problems. I was checking on JOIN_BY_SQL as well as PARSE_SELECT_IN_JOIN in universe parameters, but at glance I didn't find how to solve this with them.
    Any ways to force the join, or achieve the data from the both tables in one report table otherwise?

    Well, I managed to sort this out somehow by using custom SQL in the Web Intelligence report, and joining the tables there with
    LEFT JOIN TEST.RESPONSE
    ON TEST.SUMMARY."NUMBER"=TEST.RESPONSE.FOREIGN_KEY
    Smells like duck tape, but it's  working at least somehow. I guess the custom SQL is passed to some lower level, and so the universe-automatic-whatever doesn't handle it in the fly.
    Any other ideas?

  • Primary keys and store generated pattern

    Hi,
    in my database first application (Firebird), the primary keys are not set to identity by default !
    any ideas why this ?

    Solved !
    put #PK_GEN# as comment for your primary key and now EF import primary keys columns as identity like expeted :)
    btw, fb 3.0 and up support identity columns .

  • Bad exec plan when joining tables using primary keys together w/ Contains

    Hello all...this is something that confuzzles me....
    When joining 2 tables, the exec plan shows that the domain index is first accessed, before checking if there is a record in the other table using a highly selective index.
    create table users
    (userid varchar2(20),
    name varchar2(100),
    resume clob
    create table seeker
    (seekerid varchar2(20),
    userid varchar2(20),
    jobid varchar2(20)
    create index user_idx on users(userid)
    create index job_resume_index on users(resume)
    indextype is ctxsys.context
    create unique index seeker_unik on seeker(seekerid)
    create index seeker_index on seeker(jobid,userid)
    then sample records where inserted, then the text index was sync'ed.
    Query and Execution Plan:
    select u.userid, u.name
    from users u, seeker s
    where s.jobid = 'HJOBP000000000218627'
    and u.userid = s.userid
    and contains(resume,'texas') > 1
    Execution Plan
    0 SELECT STATEMENT Optimizer=CHOOSE (Cost=3 Card=1 Bytes=72)
    1 0 NESTED LOOPS (Cost=3 Card=1 Bytes=72)
    2 1 TABLE ACCESS (BY INDEX ROWID) OF 'USERS' (Cost=2 Card=1
    Bytes=30)
    3 2 DOMAIN INDEX OF 'JOB_RESUME_INDEX' (Cost=0)
    4 1 INDEX (RANGE SCAN) OF 'SEEKER_INDEX' (NON-UNIQUE) (Cost=
    1 Card=1 Bytes=42)
    The problem with execution plan is if the domain index returns huge number of records i.e. 40k rows, then it has to check each userid with the SEEKER table, and returns only 10 rows. I can add a hint to specify the use of the user_idx instead of the domain index to improve performance.
    My question is how does the database determine when to use the domain index or to use other highly selective index with out the aid of a HINT. The trace file shows the use of "CTXSYS"."TEXTOPTSTATS".ODCIStatsIndexCost and "CTXSYS"."TEXTOPTSTATS".ODCIStatsFunctionCost. Are these used to compute and compare the cost of each index and decide on what index to used? If so, why does it return a lower cost for domain index when the btree index is more efficient? I have all statistics gathered for all tables and indexes (inc dr$ tables and its indexes)
    Thanks,
    jojo

    Hi,
    What I'm pasting here is actually from Ch9 of Expert PL/SQL. It shows what happens during a select with CONTAINS. It does not include a join with another table, or an additional column in the where clause. Hope it helps.
    ================================================
    By default, the Extensible Query Optimizer is enabled. When enabled, the Extensible Query Optimizer can determine the I/O and CPU cost associated with the CONTAINS predicate, find the cost of each call to the CONTAINS() function, and determine the selectivity of the CONTAINS predicate.
    To see this in action I ran the basic select earlier. Examining the SQL trace shows the steps.
    Step 1 - Determine the I/O and CPU cost of the CONTAINS() function:
    --Available online as part of contains_trace.doc
    "CTXSYS"."TEXTOPTSTATS".ODCIStatsFunctionCost(
    sys.ODCIFuncInfo('CTXSYS',
    'CTX_CONTAINS',
    'TEXTCONTAINS',
    2),
    cost,
    sys.ODCIARGDESCLIST(
    sys.ODCIARGDESC(
    2, 'DOCUMENT_REPOSITORY', 'PLSQL',
    '"DOCUMENT"', NULL, NULL, NULL),
    sys.ODCIARGDESC(3, NULL, NULL, NULL, NULL, NULL, NULL)),
    NULL,
    'constitution',
    sys.ODCIENV(0,0,0,1));
    Step 2 – Determine the selectivity of the CONTAINS predicate
    -- Available online as part of contains_trace.doc
    "CTXSYS"."TEXTOPTSTATS".ODCIStatsSelectivity(
    sys.ODCIPREDINFO('CTXSYS',
    'CTX_CONTAINS',
    'TEXTCONTAINS',
    32),
    sel,
    sys.ODCIARGDESCLIST(
    sys.ODCIARGDESC(3, NULL, NULL, NULL, NULL, NULL, NULL),
    sys.ODCIARGDESC(5, NULL, NULL, NULL, NULL, NULL, NULL),
    sys.ODCIARGDESC(2, 'DOCUMENT_REPOSITORY', 'PLSQL',
    "DOCUMENT"', NULL, NULL, NULL),
    sys.ODCIARGDESC(3, NULL, NULL, NULL, NULL, NULL, NULL)),
    0,
    NULL,
    NULL,
    'constitution',
    sys.ODCIENV(0,0,0,1));
    Step 3: Determine the I/O and CPU cost of the CONTAINS predicate
    -- Available online as part of contains_trace.doc
    "CTXSYS"."TEXTOPTSTATS".ODCIStatsIndexCost(
    sys.ODCIINDEXINFO('PLSQL',
    'EXPERT_IDX',
    sys.ODCICOLINFOLIST(
    sys.ODCICOLINFO('PLSQL', 'DOCUMENT_REPOSITORY',
    '"DOCUMENT"', 'BFILE', NULL, NULL)),
    NULL,
    0,
    0),
    50.00000000,
    cost,
    sys.ODCIQUERYINFO(
    2,
    sys.ODCIOBJECTLIST(sys.ODCIOBJECT('SCORE', 'CTXSYS'))),
    sys.ODCIPREDINFO('CTXSYS', 'CONTAINS', NULL, 0),
    sys.ODCIARGDESCLIST(
    sys.ODCIARGDESC(3, NULL, NULL, NULL, NULL, NULL, NULL),
    sys.ODCIARGDESC(5, NULL, NULL, NULL, NULL, NULL, NULL),
    sys.ODCIARGDESC(2, 'DOCUMENT_REPOSITORY', 'PLSQL',
    '"DOCUMENT"', NULL, NULL, NULL),
    sys.ODCIARGDESC(3, NULL, NULL, NULL, NULL, NULL, NULL)),
    1,
    NULL,
    'constitution',
    sys.ODCIENV(0,0,0,1));
    Note: The 50.00000000 in this last call is the selectivity retrieved from step 2.
    Only after these three steps complete does the query actually get executed:
    -- Available online as part of contains_trace.doc
    SELECT score(1), title
    FROM document_repository
    WHERE CONTAINS(document, 'constitution', 1) > 0
    ORDER BY 1 DESC;
    This is not the end of the processing though. To retrieve the records, the $I table (the index data table) is queried as follows:
    -- Available online as part of contains_trace.doc
    SELECT /*+ INDEX(i) */ TOKEN_FIRST,TOKEN_LAST,TOKEN_COUNT,ROWID
    FROM "PLSQL"."DR$EXPERT_IDX$I" i
    WHERE TOKEN_TEXT = 'CONSTITUTION'
    AND TOKEN_TYPE = 0
    ORDER BY TOKEN_TEXT, TOKEN_TYPE, TOKEN_FIRST;
    Note: The search term is UPPERCASE when querying against the DR$EXPERT_IDX$I table because all of the tokens are stored in uppercase by default. The original SELECT was in lowercase. This automatic conversion to uppercase allows the Text index to provide case-insensitive searching.
    This query returns the following result:
    TOKEN_FIRST TOKEN_LAST TOKEN_COUNT ROWID
    1 2 2 AAAN54AAEAAAOvEAAo
    Finally, the $R table (the rowid table) is queried.
    -- Available online as part of contains_trace.doc
    SELECT data
    FROM "PLSQL"."DR$EXPERT_IDX$R"
    WHERE row_no = 0;
    Only now do I see the results of my query:
    SCORE(1) TITLE
    55 United States Constitution
    8 Bill of Rights
    Keep in mind that modifications to the query, such as the addition of other columns in the where clause or the addition of operators, will result in a different trace.
    ===============================

  • Inner join-select -primary key in table issue

    Hi ,
            Iam using FEBKO(header) and FEBEP(item) in inner join  select .But the datas fetching by this selct in not correct.The analysis is the is no common primary fields in the both table.
    Question 1-> Can i use inner join without common primary key in the both tables, weather it possible to make a select without common primary key in both table. Please kindly let me know.
    Question 2-> What is the other possible way to give the selct for both table(better performance)
    Regards,
    Veera

    Hi,
    When you use INNER JOIN in this case, link your tables based on KUKEY and ESNUM fields, bcoz there can be many items under a single header. So this will work for you, even from the performance point of view.
    Hope this is helpful to you. If you need further information, revert back.
    Reward all the helpful answers.
    Regards
    Nagaraj T

  • Cannot select ROWID from, or sample, a join view without a key-preserve

    I'm getting an error "cannot select ROWID from, or sample, a join view without a key-preserved table" when performing an INSERT. There is no error when performing an UPDATE.
    I created a "Form with Reports" page, where the Reports is based on a view multi table join. The primary key I chose during the form creation process is "From Trigger". The primary key "ACCESS_ID" has been defined in the base table. On the view, I have created an INSTEAD OF TRIGGER, for both Insert and Update. The update seems to work. I am using the automatic row processing for the update and insert.
    Additional information: My insert works standalone i.e. i write
    insert into jxjplntr_access_v (col1, ...)
    values (va1, val2...)
    and it works when i run it on SQL window.
    access_id has a constraint defined as not null and also PK.
    I have an insert "instead of" trigger defined on the jxjplntr_access_v view.
    However, when i "CREATE" a record after filling in the values, I get the above error. BTW, here is the view definition:
    CREATE OR REPLACE VIEW jxjplntr_access_v (
    access_id,
    person_id,
    person_name,
    badge_number,
    ntr_resp_type,
    primary_flag,
    start_date_active,
    end_date_active,
    created_by,
    created_by_uname,
    creation_date,
    last_updated_by,
    last_updated_by_uname,
    last_update_date,
    last_update_login )
    AS
    select
    access_id,
    ja.person_id,
    initcap(p.last_name||', '||p.first_name) person_name,
    p.employee_number badge_number,
    ntr_resp_type,
    primary_flag,
    ja.start_date_active,
    ja.end_date_active,
    ja.created_by,
    f1.user_name created_by_uname,
    ja.creation_date,
    ja.last_updated_by,
    f2.user_name last_updated_by_uname,
    ja.last_update_date,
    ja.last_update_login
    from jplntr.jplntr_access ja
    ,fnd_user f1
    ,fnd_user f2
    ,per_people_x p
    where f1.user_id(+) = ja.created_by
    and f2.user_id(+) = ja.last_updated_by
    and p.person_id(+) = ja.person_id
    Thanks in advance.
    K
    Edited by: kktong on Dec 12, 2011 5:39 PM
    Edited by: kktong on Dec 13, 2011 10:06 AM

    I've just been looking at exactly the same problem. From my initial investigations, this seems to be a bug with Apex and creating a tabular form, as described in this thread here:
    v4.0 - Tabular form ORA-01445: cannot select ROWID from, or sample,
    Very frustrating!
    I hope thats of use to you. If I find out anything else, I'll come back and let you know.
    Simon
    Edited by: Simon Holt on 26-Jul-2012 03:32

  • How to generate the primary key item automatically in form region?.

    Hi,
    The primary key item is generated automatically in report region.I already give the pl/sql function for generating of primary key.but I want to generate the primary key value automatically in form region only?.how to do this?.Pls help me..
    Thanks and Regards.

    One of the guidelines when selecting column for a primary key is:
    Choose a column whose data values are never changed. A primary key value is only used to identify a row in the table, and its data should never be used for any other purpose. Therefore, primary key values should rarely or never be changed.
    Cheers!

  • How to obtain automatically generated primary key

    Are there any ways to obtain the value of a primary key which is generated automatically by a server?
    Thanks.

    Are there any ways to obtain the value of a primary
    key which is generated automatically by a server?Yes, if you are using JDBC 3.0 and a driver that supports it.
    You do something like this (from the JDBC getting started guid at http://java.sun.com/j2se/1.4/docs/guide/jdbc/getstart/statement.html#1000569):
    String sql = "INSERT INTO AUTHORS (LAST, FIRST, HOME) VALUES " +
                                                      "'PARKER', 'DOROTHY', 'USA', keyColumn";
    int rows = stmt.executeUpdate(sql,
                                                                    Statement.RETURN_GENERATED_KEYS);
    ResultSet rs = stmt.getGeneratedKeys();
    if (rs.next()) {
            ResultSetMetaData rsmd = rs.getMetaData();
            int colCount = rsmd.getColumnCount();
            do {
                    for (int i = 1; i <= colCount; i++) {
                            String key = rs.getString(i);
                            System.out.println("key " + i + "is " + key);
            while (rs.next();)
    else {
            System.out.println("There are no generated keys.");
    }

  • What to use in jpa from self generated primary key ?

    Is it described somewhere what strategy to use with JPA when primary key are self generated by a trigger into the table ?
    Thank You

    Please see this link http://en.wikibooks.org/wiki/Java_Persistence/Identity_and_Sequencing#Primary_Keys_through_Triggers

  • How do I let user enter a primary key value on a form

    I'm creating my first APEX application. I have a simple table called HOSTS with 2 columns HOSTNAME and IP_ADDRESS. HOSTNAME is the primary key for the table. HOSTNAME is a perfectly acceptable primary key and I don’t wish to create an additional column to be populated by a sequence.
    What are my options for creating a form on the table without using "Existing trigger", "Custom PL/SQL function" or "Existing Sequence" to populate the primary key column, i.e. HOSTNAME, so that the user can enter a value for the primary key?
    Any assistance greatly appreciated.
    Gavin

    The debate about natural keys versus surrogate keys
    will no doubt continue with advocates for both sides.
    However there is also a difference between
    'making your life easier' for APEX development and
    'making your life more difficult' by having to
    analyse, implement and deploy a surrogate key only
    approach to an existing database which employs both
    natural keys and surrogate keys.
    hould we be forced to change the database design
    because a development tool does not cater for natural
    primary keys?The application development product is TRYING to save you from shooting yourself in the foot. The idea is to separate the primary key from being accessed by the user or ANY carbon based unit.. The key is mainly used by the system to join and lookup data rows, not for people to change whenever they decide that the key is WRONG.
    Think about this, if you use Last Name as a key in your system (a bad idea to begin with since this is NOT a unique id when you have two Smiths). When a person needs to change this because Jimmy Smith is NOT the only Smith working for Acme Toys, you have to cascade that change through all the child tables related to the main person table.
    If instead you use a system generated key, no change will be required since the key has NO relation to the data other than it represents a pointer to that row of data.
    Works for me, since I do not want to write all the supporting code when APEX builds it for you...
    Thank you,
    Tony Miller
    UTMB/EHN

  • Having a problem with creating/using a primary key on a view

    I have a problem with a primary key on a view
    I created the view and primary key as follows:
    CREATE OR REPLACE FORCE VIEW "MDD"."ROCK_LU" ("DESCRIPTION",
         UNIQUE ("DESCRIPTION") RELY DISABLE,
         CONSTRAINT "ROCK_LU_PK" PRIMARY KEY ("DESCRIPTION") RELY DISABLE) AS
    SELECT DESCRIPTION
    FROM MRMC_LU
    WHERE ROCK = 'T';
    The view with the primary key appears to have been created as there were no error messages. (The above was from the sql tab in sql developer.)
    When I try to create the foreign key on my mdd_hr table - I get an error
    /* hr_name - foreign key */
    ALTER TABLE mdd_hr add CONSTRAINT hr_name_fk FOREIGN KEY (hr_name) REFERENCES rock_lu(description);
    Error report:
    SQL Error: ORA-02270: no matching unique or primary key for this column-list.
    When I lookup the index in sql developer, rock_lu_pk is not there.
    All my other foreign keys work - but I don't understand what I am doing wrong with this one. Please help.
    glenn
    Background - as to why I want to use a view as a lookup table.
    The MRMC_LU table that the view is created from is structured like:
    DESCRIPTION - MINERAL - ROCK - MODIFIER - COMMODITY
    ANHYDRITE - T - T - T
    APLITE - T - - T
    GRAPHITE - T - - - T
    GREYWACKE - - T
    DESCRIPTION is a list of all names of minerals, rocks, modifiers and commodities. T is entered in each valid field. Often a description name is used for both a mineral and a rock or a mineral and a commodity or any other combination. Because this database is just starting up, it was more efficient to create one table that could be updated (and thereby automatically update the MINERAL_LU, ROCK_LU, MODIFIER_LY, COMMODITY_LU views) rather than create and maintain four separate but similar tables. A primary key cannot be generated for the MRMC_LU table as there are nulls in each column
    except DESCRIPTION.
    Perhaps there is a smarter way to do this?

    http://download-uk.oracle.com/docs/cd/B10501_01/server.920/a96540/statements_85a.htm#2065512
    You can specify constraints on views and object views. You define the constraint at the view level using the out_of_line_constraint clause. You define the constraint as part of column or attribute specification using the inline_constraint clause after the appropriate alias.
    Oracle does not enforce view constraints. However, operations on views are subject to the integrity constraints defined on the underlying base tables. This means that you can enforce constraints on views through constraints on base tables.
    Restrictions on View Constraints
    View constraints are a subset of table constraints and are subject to the following restrictions:
    You can specify only unique, primary key, and foreign key constraints on views. However, you can define the view using the WITH CHECK OPTION clause, which is equivalent to specifying a check constraint for the view.
    Because view constraints are not enforced directly, you cannot specify INITIALLY DEFERRED or DEFERRABLE.
    View constraints are supported only in DISABLE NOVALIDATE mode. You must specify the keywords DISABLE NOVALIDATE when you declare the view constraint, and you cannot specify any other mode.
    You cannot specify the using_index_clause, the exceptions_clause clause, or the ON DELETE clause of the references_clause.
    You cannot define view constraints on attributes of an object column.
    Rgds.

  • Primary Keys and Triggers

    I am developing a web application for the agency I work for and would like to use toplink (10g, aka 9.0.4). The agency has hade a policy since about Oracle 6 that all primary keys will be generated by a standard trigger returning a 32 character string. This policy is unlikely to change.
    Can toplink be used in this scenario? It does not appear that this is possible. I have seen the "return policy" example which appears to be a solution, but this is for a prototype version of 10g that is not yet released. At least, that is my interpretation.
    Can toplink 10g (9.0.4) insert records into tables where the primary key is generated by a trigger?
    Can this be configured in the Workbench or is this configured manually (if at all)?
    Thanks,
    Brad Smith

    Really it's an impedence mismatch issue.
    With or without TopLink, no matter what you do you're going to always have to do two round trips to get new data in the database (once to Insert it and once to read the PK for use in the cache).
    The question I usually ask is -- is this generated PK relevant to your business model? If it's not relevant, then don't map it, and create and use your own PK that can be managed in the mid-tier, use native sequencing, or some other O-R friendly approach. Go ahead and let the database trigger-generate keys, as long as you have some other unique value for the object, then it doesn't matter if the DB trigger generates one for it's own purposes.
    If you do at some point need this tigger generated value, you can make use of events. Pre/post insert/update/delete/write, whatever, events can be used to get/manage the trigger generated data on the database through JDBC calls.
    Bottom line is that impedence mis-match is your enemy in this situation, and TopLink has the event framework at your disposal to work with this mismatch.
    - Don

  • CMP with Auto-increment Primary Key problem

    I'm trying to set a column as IDENTITY in PointBase and have the app server utilize this in the CMP beans. I followed the instructions from the tutorial:
    - In the deployment descriptor, the primary key class is defined as a java.lang.Object. The primary key field is not specified.
    - In the home interface, the argument of the findByPrimaryKey method must be java.lang.Object.
    - In the entity bean class, the return type of the ejbCreate method must be a java.lang.Object.
    Below is (a fragment of) my deployment descriptor:
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE ejb-jar PUBLIC "-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 2.0//EN" "http://java.sun.com/dtd/ejb-jar_2_0.dtd">
    <ejb-jar>
    <display-name>CMPModule</display-name>
    <enterprise-beans>
    <entity>
    <display-name>DocState</display-name>
    <ejb-name>DocState</ejb-name>
    <home>com.sun.itstar.j2ee.projectdocmgt.ejb.DocStateHome</home>
    <remote>com.sun.itstar.j2ee.projectdocmgt.ejb.DocState</remote>
    <local-home>com.sun.itstar.j2ee.projectdocmgt.ejb.LocalDocStateHome</local-home>
    <local>com.sun.itstar.j2ee.projectdocmgt.ejb.LocalDocState</local>
    <ejb-class>com.sun.itstar.j2ee.projectdocmgt.ejb.DocStateBean</ejb-class>
    <persistence-type>Container</persistence-type>
    <prim-key-class>java.lang.Object</prim-key-class>
    <reentrant>False</reentrant>
    <abstract-schema-name>DocState</abstract-schema-name>
    <cmp-field>
    <field-name>name</field-name>
    </cmp-field>
    <cmp-field>
    <field-name>description</field-name>
    </cmp-field>
    <cmp-field>
    <field-name>color</field-name>
    </cmp-field>
    </entity>
    In the admin-serv/logs directory I get the follow message (bad place for the logs, took me a while to find where it was putting it!):
    [24/Sep/2002:16:33:57] WARNING ( 4165): Validation error in bean DocumentType: Warning: All primary key columns in primary table DOCUMENT_TYPE of the bean corresponding to the generated class com.sun.itstar.j2ee.projectdocmgt.ejb.DocumentTypeBean_387898907_JDOState must be mapped to key fields.
    Map the following primary key columns to key fields: DOCUMENT_TYPE.ID. If you already have fields mapped to these columns, verify that they are key fields.

    Great! This worked. Here are some clear steps:
    1. delete the field from the CMP
    2. delete any business methods that you might have for the field
    3. go to the properties of the bean, find the primary key property. Set the property to Unkown Primey Key Class (java.lang.Object)
    Now there is a bigger problem. CMR fields. In ejbPostCreate() the bean gets its own pk and looks up other related beans. Now that I have removed the accessor to the pk field (and the pk field from the bean), how do I lookup the relationships?
    I need some method that I can call from within ejbPostCreate() that will return the primary key...
    I tried adding the field back in but not as the primary key. That generated an exception that said you cannot do that. If the field is the pk it must be marked as the pk.
    Any ideas?

  • EjbCreate() method return primary key genereted by database

    Hello Everyone,
    I have entity CMP EJB that maps MySQL database table, which is set to asign Primary key (integer) to new entries automatically by using AUTO_INCREMENT. The problem is ejbCreate(..) method, which returns primary key. My question is: how to make it return primary key generated by database?
    Thanks

    Hi,
    I'm also facing the same problem also. The problem is: how do I code the ejbCreate method?
    If I don't initialize the primary key field, I get a complaint that the primary key field needs to be initialized in ejbCreate.
    But if I try to initialize it to an arbitrary value, the database won't allow me to do the insert, because the primary key is auto-generated.

  • Primary Key Migration - Hierarchical Structures

    Hi,
    I'm involved in looking at a migration of a hierarchical database to ORACLE. For some table types the primary keys at the top of the hierarchy are compound ones and these need to be migrated to the next level of hierarchy. At the
    next level of hierarchy there are further columns that need to become part of the primary key at that level.
    Where the hierarchies get deep I'm looking at a pretty large primary key if this method is used.
    Table A
    Columns A1,A2
    Primary Key A1,A2
    Table B
    Columns A1,A2,B1,B2
    Primary Key A1,A2,B1,B2
    Foreign Key referencing table A columns A1,A2
    Table C
    Columns A1,A2,B1,B2,C1,C2
    Primary Key A1,A2,B1,B2,C1,C2
    Foreign Key referencing table B columns A1,A2,B1,B2
    To me this looks quite unwieldy so I was strongly considering giving tables A,B an C a new primary key 'ID'
    column generated from a sequence and using that to maintain the relationships thus:
    Table A
    Columns ID,A1,A2
    Primary Key ID
    Unique Constraint A1,A2
    Table B
    Columns ID,A_ID,B1,B2
    Primary Key ID
    Unique Constraint A_ID,B1,B2
    Foreign Key A references A column ID
    Table C
    Columns ID,B_ID,C1,C2
    Primary Key ID
    Unique Constraint B_ID,C1,C2
    Foreign Key B_ID references B column ID
    This involves another index for the ID column on each table I know, but it stops replication of data and would enable changes to the key values without losing the entire hierarchical relationship.
    Does anyone have any experience with either of these two approaches who could shed some light on the pitfalls of each approach?
    Thanks in advance
    Mike

    This seems to affect migrations from MS Access as well, so I guess it applies to all source db types. If it helps, PK's are created with SD 1.2.0 / 28.54, but not with 1.2.0 / 29.98.
    As a related point it would be useful to show the constraint metadata in the captured and converted model info, rather than only see it as part of the gen script ?
    Cheers
    Jules

Maybe you are looking for

  • Zen 16GB lock ups, text display and video conversion probl

    Three issues with my new Zen 6GB. Any ideas are welcome. The first is that it keeps randomly locking up - not whitescreened or blackscreened - just locked displaying whatever it was previously showing. This happens both while trying to transfer files

  • Handling Special characters in sender JMS adapter

    Hello All, I have a scenario where I am getting a value in the payload with special chacters for e.g. "OBS!  via JMS Sender adapter, but when this value comes to integration engine, it gets converted into something like this <A&B' . I tried using ISO

  • Help!  iPhoto 6.01 update - no Thumbnails

    I just installed iPhoto 6.01. I had iPhoto 6 installed and all was well. Upon upgrading, my ENTIRE library shows no thumbnails, only dashed boxes and the titles of the images. When I go into edit mode, blank. Can't import. Seems like iPhoto no longer

  • Cal Total Available budget for a particular Object No (Fund No)

    Hi All, Can anyone tell me how to cal Total Available budget for a particular Object No (Fund No) Thanks

  • CS5 Benchmark with PPBM4

    This is a double post as many readers here do not necessarily read the Hardware forum Harm's Beta CS5 benchmark with PPBM4 is now posted!  WOW!  And all that improvement without a CUDA graphics card so when we see the Mercury Playback Engine addition