Master/Details tables with CASCADE delete giving "table mutating" error

Hi,
I have two tables in a master/details configuration (table 1 is "master", table 2 is "details").
The details has a FK contraint relation to the master with a CASCADE delete (so when the master is deleted, all associated details are deleted).
The master table has a column "last_updated_datetime" which is updated by a master table update trigger whenever most (excluding the last_updated_datetime column) columns are updated.
The details table has an update trigger which also updates the master table's last_updated_datetime column (whenever a detail row is changed).
The details table also has a delete trigger which also updated the master table's last_updated_datetime column (whenever a detail row is deleted).
The problem I have is: When the master record is deleted, which cascade deletes the details record(s), the delete trigger on the details table throws a "table is mutating" error.
I understand that the "mutating" error is "correct" because the master record is being deleted.
But is there some way I can get around this problem (for example, having the details table delete trigger not update the master table last_updated_datetime) when it's this cascade delete?
Thanks for your help!

create table master (
  id number primary key,
  changed date not null
create table detail (
  id number primary key,
  master_id references master (id) on delete cascade
create or replace package pkg is
  master_deleted boolean := false;
end;
create or replace trigger bds_master
  before delete on master
begin
  pkg.master_deleted := true;
end;
create or replace trigger ads_master
  after delete on master
begin
  pkg.master_deleted := false;
end;
create or replace trigger adr_detail
  after delete on detail
  for each row
begin
if not pkg.master_deleted then
    update master
       set changed = sysdate
     where id = :old.master_id;
  end if;
end;
insert into master values (1, sysdate - 10);
insert into detail values (11, 1);
insert into detail values (12, 1);
insert into master values (2, sysdate - 10);
insert into detail values (21, 2);
insert into detail values (22, 2);
insert into master values (3, sysdate - 10);
insert into detail values (31, 3);
insert into detail values (32, 3);
commit;
select * from master order by id;
        ID CHANGED                                                             
         1 01.09.08                                                            
         2 01.09.08                                                            
         3 01.09.08                                                            
select * from detail order by id;
        ID  MASTER_ID                                                          
        11          1                                                          
        12          1                                                          
        21          2                                                          
        22          2                                                          
        31          3                                                          
        32          3                                                          
delete detail where id = 21;
select * from master order by id;
        ID CHANGED                                                             
         1 01.09.08                                                            
         2 11.09.08
         3 01.09.08                                                            
select * from detail order by id;
        ID  MASTER_ID                                                          
        11          1                                                          
        12          1                                                          
        22          2                                                          
        31          3                                                          
        32          3                                                          
delete master where id in (1, 2);
select * from master order by id;
        ID CHANGED                                                             
         3 01.09.08                                                            
select * from detail order by id;
        ID  MASTER_ID                                                          
        31          3                                                          
        32          3                                                           Regards,
Zlatko
Edited by: Zlatko Sirotic on Sep 11, 2008 11:15 PM
This is disaster - ten attempts to format code!

Similar Messages

  • Polling the master detail table and to update the LAST_UPDATED with SYSDATE

    Hi
    The requirement is polling the master detail table where read_flag is null and has to update the LAST_UPDATED with SYSDATE in both tables.
    Refered the MasterDetail and PollingPureSQLSysdateLogicalDelete samples of SOASuite.
    Used the delete polling strategy in polling process and modified the generated TopLink discriptor as follows.
    set the TopLink -> Custom SQL tab -> Delete tab with the following query
    for master table (RECEIVER_DEPT) :
    update RECEIVER_DEPT set READ_FLAG= 'S' , LAST_UPDATED=sysdate where DEPTNO=#DEPTNO
    set the TopLink -> Custom SQL tab -> Delete tab with the following query
    for Detail table (RECEIVER_EMP):
    update RECEIVER_EMP set LAST_UPDATED=sysdate where EMPNO=#EMPNO
    After deploying the bpel process data is updated in master(RECEIVER_DEPT) table with LAST_UPDATED as sysdate and read_flag as S
    however data is deleted in detail(RECEIVER_EMP) table rather than updated records.

    Xtanto,
    I suggest using JSP / Struts. UIX will be replaced by ADF Faces in JDeveloper 10.1.3 and thus I wouldn't suggest new developments to be started with UIX unless time doesn't allow to wait for ADF Faces. In this case develop UIX in an MVC1 model, using the UIX events for navigation because this model seems more likely to be mgratable, according to the UIX Statement of direction on Otn.
    Back to your question. You can create a search form in JSP that forwards the request to a StrutsData Action to set the scope of teh result set. The read only table can have a link or a button to call the detail page, passing the RoewKey as a string.
    Have a look at the Oracle by Example (OBE) tutorials that contain similar exaqmples.
    Frank

  • Master Detail Form with Report - Referring a column in another table

    I have master detail form with a report option. The master table has a column that also references a look up table.
    When the report is displayed the lookup column id is displayed. Rather I want to get the look-up value from a lookup table
    and display in the report.
    When I see the report region Query definition , it just has the columns to add/remove only from the master table.
    Could you pls help me with this regard.
    Eg :
    Dept Table
    dept_id
    dept_name
    location_id
    Employee Table
    employee_id
    employee_name
    dept_id
    location
    location_id_id
    location_name
    Master is Dept, Detail is dept and lookup table is location.

    Simply add the lookup table to the FROM clause and join its PK with the FK in the master table in your query. That's basic SQL, and you definitely must get a good grasp of SQL to do more than very basic work in APEX.
    For a good example, please see http://download.oracle.com/docs/cd/E10513_01/doc/appdev.310/e10498/build_app.htm#BCEBJJGB
    While you're at it, read and implement the tasks outlined in the 2 Day + Application Express Developer's Guide - http://download.oracle.com/docs/cd/E10513_01/doc/appdev.310/e10498/toc.htm. After that, read the "Oracle Application Express 3.0-- Building a Functional Application" OBE in http://www.oracle.com/technology/obe/apex/obe30/apexdev30.htm - great stuff.
    Georger

  • Problem with crude operations in master detail tables

    Hi,
    I have Master-Detail tables in my page and crud operations are there for both the tables. Create/delete/edit are working fine on the master table but i am facing the following problems for the detail table
    1.delete operation is alway referring to the 1st record.
    2.Edit operation is working fine for the 1st time but when i amt trying to edit any other record it's refer to the previous record, if i did the same again then it's pointing to current record.
    Selected row keys and selectionListner and row selection is defined on my detail table as shown below.
    selectedRowKeys="#{bindings.CmSubscriberTerritoryXrefView1.collectionModel.selectedRow}"
    selectionListener="#{bindings.CmSubscriberTerritoryXrefView1.collectionModel.makeCurrent}"
    rowSelection="single"
    Please do need full.

    Hi,
    Thanks for your quick reply.
    I am using JDeveloper 11g. Yes i select the record, i am using a popup for delete operation so i write a button which invoke popup in that popup i am asking confirmation like do you wanted to delete for not. in the OK button i have return logic like
    BindingContainer bindings = getBindings();
    OperationBinding operationBinding =
    bindings.getOperationBinding("Delete2");
    Object result = operationBinding.execute();
    if (!operationBinding.getErrors().isEmpty()) {
    return null;
    operationBinding = bindings.getOperationBinding("Commit");
    result = operationBinding.execute();
    if (!operationBinding.getErrors().isEmpty()) {
    return null;
    FacesContext fc = FacesContext.getCurrentInstance();

  • Button enable/disable in Master-Detail table

    I am using JDeveloper 11.1.1.3.0 and I have a page fragment (.jsff) which includes a Master-Detail table and the Master table has 3 buttons that get enabled/disabled based on the specific string within a column say, if the column has value, 'DRAFT', the buttons should be enabled. In all other cases, the buttons should be disabled.
    The above mentioned scenario works in cases where the table has more than one row in the table; but in two cases the buttons don't get enabled even though the column has 'DRAFT' as its value:
         1. when the table first loads with the data populated in the table; clicking on the first row doesn't trigger the buttons, clicking on any other row triggers the buttons
         2. when there is only one row in the table
    To resolve this, I tried looking at the logs for any specific information regarding the buttons getting enabled or disabled. I couldn't find info on setting up a breakpoint for the commandbutton and the disabled property which would enable me to determine whether it is being triggered as soon as the table gets populated or not.
    How can I get the buttons to work per my requirements? Also, can I set breakpoints for the button and/or evaluate disabled property's EL expression?
    Thanks in advance.

    Navaneeth:
    The buttons are part of panelCollection which exists in panelHeader. As the below code demonstrates,
    1. Buttons are defined in the toolbar (t2) in panelCollection (pc1)
    2. Each buttons' partialTrigger is set to the table (md1)
    3. Tables' (md1) partialTrigger is set to the toolbar (t2).
    <af:panelHeader text="#{viewcontrollerBundle.HISTORIC_PANEL_SPECS__TESTER_S}" id="ph2">
            <af:panelCollection id="pc1" styleClass="AFStretchWidth">
              <f:facet name="menus"/>
              <f:facet name="toolbar">
                <af:toolbar id="t2" partialTriggers="t2">
                  <af:commandButton actionListener="#{bindings.promotePanelSpec.execute}"
                                    text="#{viewcontrollerBundle.PROMOTE_PANEL_SPEC}"
                                    id="cb1" icon="/Images/up16.png"
                                    partialTriggers="md1"
                                    disabled='#{bindings.Status!="DRAFT"}'
                                    immediate="true"/>
                  <af:commandButton text="#{viewcontrollerBundle.ADD_TESTER_SPEC}" id="cb2"
                                    partialTriggers="md1"
                                    icon="/Images/action_add.gif"
                                    actionListener="#{bindings.CreateWithParams.execute}"
                                    action="addTestSpec"
                                    disabled='#{bindings.Status!="DRAFT"}'/>
                  <af:commandButton actionListener="#{PanelSpecTesterSpec.deleteTesterSpec}"
                                    text="#{viewcontrollerBundle.REMOVE_TESTER_SPEC}"
                                    id="cb3" partialTriggers="md1 ::pc2:t1"
                                    icon="/Images/delete.png"
                                    disabled='#{bindings.Status!="DRAFT"}'/>
                </af:toolbar>
              </f:facet>
              <f:facet name="statusbar"/>
              <af:table id="md1"
                        rows="#{bindings.PanelSpecTesterSpecView1.rangeSize}"
                        fetchSize="#{bindings.PanelSpecTesterSpecView1.rangeSize}"
                        emptyText="#{bindings.PanelSpecTesterSpecView1.viewable ? 'No data to display.' : 'Access Denied.'}"
                        var="row"
                        value="#{bindings.PanelSpecTesterSpecView1.collectionModel}"
                        rowBandingInterval="0"
                        selectedRowKeys="#{bindings.PanelSpecTesterSpecView1.collectionModel.selectedRow}"
                        selectionListener="#{bindings.PanelSpecTesterSpecView1.collectionModel.makeCurrent}"
                        rowSelection="single" partialTriggers="::t2"
                        filterVisible="true" displayRow="selected"
                        filterModel="#{bindings.ProductIdPanelSpecVersionToolNameQuery.queryDescriptor}"
                        queryListener="#{bindings.ProductIdPanelSpecVersionToolNameQuery.processQuery}">
                <af:column headerText="#{bindings.PanelSpecTesterSpecView1.hints.ProductId.label}"
                           sortProperty="ProductId" sortable="true" id="c39"
                           filterable="true">
                  <af:outputText value="#{row.ProductId}" id="ot28"/>
                </af:column>
                <af:column headerText="#{bindings.PanelSpecTesterSpecView1.hints.Status.label}"
                           sortProperty="Status" sortable="true" id="c43"
                           filterable="true">
                  <af:outputText value="#{row.Status}" id="ot40"/>
                </af:column>
              </af:table>
         </af:panelCollection>
    </af:panelHeader>The fact that the above code works when there are multiple rows tells me that buttons are having trouble reading the first row of the table.
    Also, I changed the displayRow property for the table from "selected" to "first" but no luck either.

  • Radio button in master-detail tables.

    I work with ADF, Struts, JSP of JDeveloper10G 10.1.2.0.0 (Build 1811).
    My DataPage has two master – detail tables. Master table has “radio button” in each row.
    If click on radio button of master table, information on detal table no change. But with Navigation buttons all right.
    In master table radio looks like this:
    <input type="radio" name="rowKey" value="<c:out value='${Row.rowKeyStr}'/>"
    <c:if test='${Row.currencyString == "*"}'> checked</c:if>/>
    What can i do to relate these tables over radio ?
    Thanks.

    Hi,
    the radio button by itself only sets the row currency but doesn't refresh the page. You will have to enforce a page refresh if master and detail are on the same page so teh detail data can be updated
    Frank

  • Filtering not working for newly added child objects in master-detail table

    Hi,
    I am using Jdeveloper 11.1.1.4 version.
    Problem scenario:
    Filtering of records is not working for newly created child objects in a master-detail scenario.
    Steps to reproduce this issue using HR Schema (using LOCATIONS and DEPARTMENTS table ) :
    1. Create Business components (EO's & VO's ) for LOCATIONS & DEPARTMENTS table)
    1. Create a .jspx page and insert a readonly master table of Locations
    2. Insert a child table (inline-edit table) of Departments and enable filtering
    4. For the child table, drag and drop CreateInsert operation as a toolbar button .
    5. Create a new child record using the toolbar button and enter data .
    6. Filtering on the newly created child record's attributes does not work.
    Please note that the same filter works for existing child records.
    Any suggestions for resolving this issue?
    Thanks,
    Vikas

    Found from Fusion Developer's Guide the following snippet about QBE functionality :
    "+When you create data controls, all data collections will automatically include a Named Criteria node with an All Queriable Attributes criteria. This is the default view criteria that includes all the searchable attributes or columns of the data collection. You cannot edit or modify this view criteria+. "
    So, the question is if the implicit view criteria cannot be edited, how else to set the query execution mode to "Both" ?
    Shouldn't ADF BC support this by default? Is this a bug?
    Note:- If you create a maste-detail table using POJO datacontrols, filter works correctly for newly created child records also .
    This seems to be an issue with ADF-BC datacontrols only.
    Thanks,
    Vikas

  • Sql loader master detail tables

    Hi
    I am trying to load master detail tables using sql loader. I have a sequence in the master table as primary key and have to load primary key in detail table. is there any way i can query up the primary key by name in the control file. please whats the best way to do this.
    can i query up the primary key in the master table by the name in detail table which is jan09.
    e.g
    master data
    jan09,description
    detail data
    jan09,'test1','100,'y'
    LOAD DATA
    INFILE 'test.data'
    insert
    INTO TABLE master_table
    fields terminated by ',' optionally enclosed by '"' trailing nullcols
    (id position(1:2) "myseq.nextval",
    code char,
    creation_date date sysdate,
    last_update_date date sysdate,
    into TABLE BDETAILS
    fields terminated by ',' optionally enclosed by '"' trailing nullcols
    (id number "select id from master_table where code=" || :code
    name char,
    amt decimal,
    flag char
    )

    Hey Here is what you need.
    You will have to understand and test this properly.
    It took me quiet some time before i could get to this stage
    Here is the test data with all the commands.
    As far the ID in the detail table is concerned you have no option but to update that column once the loading is complete.
    1) create Table
    CREATE TABLE master_table(ID NUMBER,code VARCHAR2(50),creation DATE,last_update DATE);
    CREATE TABLE bdetails(ID NUMBER,NAME VARCHAR2(100),amt NUMBER,flag VARCHAR2(10));
    ALTER TABLE master_table ADD (chc VARCHAR2(10));2) Create Sequence
    CREATE SEQUENCE testseq INCREMENT BY 1;3) CTL FILE
    LOAD DATA
    INFILE 'c:\sqlldr\test.txt'  /*path of data file */
    append
    INTO TABLE master_table
    when (1) ='M'  /*to check if the record in the data file is a master record */
    fields terminated by ',' optionally enclosed by '"' trailing nullcols
    (id  expression "testseq.nextval", /*select next value from sequence */
    mcol1 filler, /*FILLER keyword is sused to skip first column from data file */
    chc,
    code  ,
    creation "sysdate",
    last_update "sysdate"
    Into TABLE BDETAILS
    when (1) ='D'  /*to check if the record in the data file is a Detail record */
    fields terminated by ',' optionally enclosed by '"' trailing nullcols
    (id  expression "testseq.currval", /* UNFORTUNATELY THIS PICKS UP THE LAST ID OF THE MASTER RECORD SESSION STUFF GOING ON HERE*/
    col1 filler position(1:2),  /* specifying this POSITION(1:2) is very very important as you need to reset the cursor to start of the line for the next record */
    name  ,
    amt ,
    flag )4) SQLLDR Command
    sqlldr scott/tiger data=c:\sqlldr\test.txt control=c:\sqlldr\1.ctl
    5) data file
    M,jan09,description
    D,test1,100,y
    M,feb09,description1
    D,test2,200,x
    M,mar09,description2
    D,test3,200,xHope this helps you and give you a lead how to proceed.
    Cheers!!!
    Bhushan

  • Update records in Master Details table

    Hi,
    I have to update a Master Details table,
    in this case after clicking the edit button user will be forwarded to the Edit page with one Header info & its corresponding Line info(e.g one header info and its 10 line info)
    user can edit header & its line info in the edit page and after clicking save header & line info will be updated to the database header & line table.
    more than one line info should be saved at a time-- is it possible??

    It is possible. Check the OAF dev guide, they have a sample.
    --Shiv                                                                                                                                                                                           

  • How to remove the Detail column programmatically in Master detail table

    Hi,
    I have a master detail table.
    I want to remove the show Hide (Detail) link from the table programmatically based on some serach criteria. Is it possible to do that.
    Thanks in Advance,
    Kaushik Rambhiya

    Set the Vertical Elasticity property of the master frame to Variable.

  • Master-Detail table on the JSF is unable to update the database

    Hi all,
    In my ADF application I am using a master-deatail relationship datasource. I have to enter the detail rows for a master table row and submit the detail rows it should update the
    database. For this I created a master-detail table and dragged the same on to my JSF page as ADF Forms. I created the forms as ADF Form included all the buttons and submit button. I
    dragged CreateInsert operation from the detail table datacontrol on to the detail form. When I enter the detail and click on submit the data is not getting submitted in the database.
    Please help me in this.
    Thankd In Advance.

    There is no such thing as an iPhone 's3'.  There is a 3G which can only be updated to iOS 4.2.1 and a 3GS which can be updated to iOS 6.1.3.
    Which model iPhone is this?
    Identifying iPhone models

  • Search in the Detail of a Master\Detail Table

    Hi everyone.
    I have a master detail table. How can i search in the detail of that table?
    Thanks!

    Assuming your detail is setup using a view link and included as an actively-coordinated view link in the data model, then the detail VO will only display the data for the current master.
    In addition, if that detail has bind variables of its own, you can supply those bind variables values using ExecuteWithParam built-in action. This will further filter that current set of details for the current master.
    For example, imagine DeptView and EmpView.
    You can search the DeptView to find Depts you want, as you navigate between them the EmpView will show only the employees for that current department. Let's say you do this and have Dept = 10 as the current row in the master. The EmpView will show all employees having DEPTNO = 10.
    You can also further filter the detail by using a view criteria or using bind variables. If you're using the latter, then the ExecuteWithParam built-in action gives you a way to supply values to those bind variables and re-executing the query. The query will be a merging of your original query and the additional WHERE clause fragment added by the framework that restricts the rows to only be for the current department.

  • Master-detail table where detail is in a bounded task flow

    Dear all,
    Iam pretty much new to ADF 11g. I have the following question.
    I have a search form(using af:query) created from the View Criteria of a view. The search results are displayed in a master-detail table, since my view has the following form in the data control:
    MasterView ->DetailView
    I would like that the detail table be part of a page fragment of a region of a bounded task flow. And of course, the detail table should be refreshed every time another row is selected in the master table.
    Is this feasible? Because I find difficulties in the following areas:
    1. How to pass a parameter to the bounded task flow that will display the detail table?
    (I suppose that I will need to build a new view to display the DetailView. In the WHERE clause I will have to pass the id of the row clicked in the master table.
    2.How passing the variable to the bounded task flow of the detail table be implemented when clicking the row of the master table? In similar examples I have seen, e.g. in the ADF Code Corner, there is always a submit button that sets a pageFlowScope variable.
    Is my approach feasible or it needs a lot of ADF twisting?
    Edited by: dimitris74 on Sep 12, 2011 6:20 AM

    Hi,
    If you have two different regions in your page for master and details and you want to refresh the child table based on your master row selection then you can use the contextual actions. Raise an event whenever you select a row and send your master-table id as the payload. Have a handler method at the detail page and execute some logic to get the rows for the selected master record.
    I hope it helps you.
    Thanks,
    Lakshman

  • How to Create Master Detail Page with Query Region

    Hi,
    1. I have a requirement that i need to create a Master(Supplier) Detail(Supplier Site) Page with Query Region.
    Eg. Supplier A in Australia has Supplier Sites X in Melbourne and Y in Sydney.
          Supplier B in US has Supplier Sites C in New York and D in California.
    I need to have Search, based on two fields Supplier Name and Country
    Let us assume i am searching with Supplier Name A then the page should be in the below layout
    Query Region
    Supplier Name : A
    Country:
    Master
    Supplier Name  Country
        A                     Australia
    Detail
    Supplier Site  City
    X                   Melbourne
    Y                   Sydney
    In detail VO it should allow me to add new sites which means i need to connect this VO to database to insert new records
    I have gone few threads and understood that this can be achieved by creating SupplierVO, SupplierSiteVO and a ViewLink.
    But when tried i don't know how can i relate my query region with the Suppleir Table(Header Reagin and Table Using Wizard) and Supplier Site Table(Header Region and Table Using Wizard) i am not sure if i am correct or not, please advise
    2. Also i need to have a Open button in this page and if click the button it should navigate to some other page.
    Please help me how can i achieve this.
    - How to design my page with query region and master detail tables
    - what is the AM and CO code need to be handled
    - What is the code should i write in Open button to open new OAF page.
    Thanks,
    CSK

    Hi,
    This link will be useful for your requirement.
    Master Detail Page using Hide Show and Advanced Table inside Advanced Table - OracleArea51.com
    Let me know if you need more help in this.
    Thanks and Regards,
    Myvizhi

  • Problems with cascading delete with entities

    I have a problem with cascading delete. I have two entities, Notebook and Note. One instance of Notebook can have several instances of Note in a Collection< Note >. The two entities are joined with a join table notebook_note that have two columns, the PK from the table of Notebook and Note. Note is not aware of the relation.
    From the user interface some elements of the collection<Note> can be added or deleted. I want to delete an element of that collection and make it persisted on the DB.
    If I add some Note elements to the collection and then I EntityManager.merge(notebook) (see public void persistNotebook() code below), I have all them persisted on the DB.
    However, if I delete some preexisting Note elements, after the merge I found deleted only the corresponding rows from the join table notebook_note BUT the rows in table Note, that was belonging to the deleted instance of Notebook, are NOT removed.
    Till now I found a way to do that (see code UserBean below), but I think that there is a simpler and so better way to do that! I hope to receive some suggestions!!
    @Entity
    public class Notebook implements Serializable {
    private static final long serialVersionUID = 1L;
    private String userName;
    private Collection<Note> notes;
    public Notebook() {
    public Notebook(String userName) {
    this.userName = userName;
    notes = new ArrayList<Note>();
    @Id
    public String getUserName() {
    return userName;
    public void setUserName(String userName) {
    this.userName = userName;
    @OneToMany(cascade = {CascadeType.ALL}, fetch = FetchType.EAGER)
    public Collection<Note> getNotes() {
    return notes;
    public void setNotes(Collection<Note> notes) {
    this.notes = notes;
    @Entity
    public class Note implements Serializable {
    String note;
    public void setNote(String note) {
    this.note = note;
    public String getNote() {
    return note;
    @Stateful
    public class UserBean implements UserRemote {
    private static Logger log = Logger.getLogger(UserRemote.class);
    @PersistenceContext(unitName = "etourism-ejbPU")
    private EntityManager em;
    &hellip;&hellip;
    @TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)
    public void persistNotebook() {
    NotebookDao notebookDao = new notebookDao(em);
    notebookDao.merge(notebook);
    em.flush();
    public void deleteNotebookNote (&hellip;.) {
    &hellip;..
    //noteFound is the note I want to delete from the Collection<Note>
    notebook.getEvents().remove(noteFound);
    persistNotebook(); //see method above
    *//I have also to explicitally delete the associated note!!!*
    *NoteDao noteDao = new NoteDao(em);*
    *noteDao.remove(noteDao.read(noteFound.getId()));*
    public void addNotebookNote(&hellip;..) {
    //add new note to the collection<Note> of the Notebook
    Note newNote = new Note(&hellip;);
    notebook.getNotes().add(newNote);
    persistNotebook();
    Where:
    public class NotebookDao extends JpaDao<Notebook, String> {
    &hellip;&hellip;
    public abstract class JpaDao<T, PK extends Serializable> implements IDao<T, PK> {
    &hellip;..
    public void remove(T entity) {
    getEntityManager().remove(entity);
    public void merge(T transientObject) {
    getEntityManager().merge(transientObject);
    }

    Thank you gimbal2 for your answer.
    You are right saying that a single Note could be bound to multiple notebooks, when using a join table, so the cascade cannot be done automatically by JPA.
    However, in my case, a single Note is bound only to one Notebook, so I would like to drop the join table (as you rightly suggest): however when I declare in the Notebook, a relation 1:N in this way ...
    @OneToMany(cascade = {CascadeType.ALL}, fetch = FetchType.EAGER)
    private Collection<Note> notes;
    ... the join table is automatically created during the deploy.
    Sorry, I am a beginner in EJB3. What kind of relational mapping annotation should I use to have a straight 1:N relationship that doesn't generate a join table?
    I think that it should be better to avoid to modify the relationship (es. cascade option) directly in the created db tables and let the logic be declared in the entity code definition: am I right?
    Waiting for your suggestion ...
    thank you very much
    Enzo
    Edited by: contini on May 22, 2009 5:37 AM

Maybe you are looking for

  • Problem with validation of css page

    Hi all why can't I validate this page with w3c, here is the page /* CSS Document */ @charset "iso-8859-1"; @media all { body { font-family: "Times New Roman", Times, serif; color: #FFFFFF; font-style: italic; background-color: #0000CC; text-align: ce

  • TA22807 does mac mini 2012 support universal bluetooth keyboard?

    Such as a Windows keyboard...

  • Remote desktop users lost overnight on windows server 2008 R2

    We set up a group in active directory to allow certain users access to this Virtual Machine. I am able to go into the the remote Users of the VM and add this group from active directory. Every Morning i have to re-add this group as it has gone at som

  • Shipping Deadlines

    Is there a way to not have the shipping deadlines redetermine the delivery date based on the route transit time during delivery creation but still be able to do rescheduling within the delivery if the user manually changes the delivery date or route?

  • Product impressions and UK shipping experience

    Shipping speed: Ordered my 60GB white engraved 5G on 13/10 which was shipped on 21/10 and arrived to me in the UK on 25/10 so a 12-day experience from start to finish. This was better than I expected due to the delay that I thought the engraving woul