users@glassfish.java.net

Re: RE: Many to Many bidirectional relationship

From: <glassfish_at_javadesktop.org>
Date: Thu, 08 Mar 2007 17:33:40 PST

[b]> Can you please turn on SQL logging to see, if entries
> in STORY_TESTTABLE are removed at all? In JavaSE,
> logging of SQL statements can be turned on by adding
>
>
> <property name="toplink.logging.level"
> value="FINE"/>
> to persistence.xml.[/b]

SELECT STORY_ID, CREATED, LASTEDITED, STORYNAME, PAGE_ID FROM STORY WHERE (STORYNAME = CAST (? AS VARCHAR(32672) ))
        bind => [Create Story]
SELECT TABLE_ID, TABLETYPE, POSITIONBELOW, TABLENAME, PAGE_ID FROM TESTTABLE WHERE (TABLENAME = CAST (? AS VARCHAR(32672) ))
        bind => [Table 4]
INSERT INTO STORY_TESTTABLE (TABLE_ID, STORY_ID) VALUES (?, ?)
        bind => [20, 13]
SELECT TABLE_ID, TABLETYPE, POSITIONBELOW, TABLENAME, PAGE_ID FROM TESTTABLE WHERE (TABLENAME = CAST (? AS VARCHAR(32672) ))
        bind => [Table 4]
SELECT STORY_ID, CREATED, LASTEDITED, STORYNAME, PAGE_ID FROM STORY WHERE (STORYNAME = CAST (? AS VARCHAR(32672) ))
        bind => [Create Story]

...

SELECT TABLE_ID, TABLETYPE, POSITIONBELOW, TABLENAME, PAGE_ID FROM TESTTABLE
SELECT TABLE_ID, TABLETYPE, POSITIONBELOW, TABLENAME, PAGE_ID FROM TESTTABLE WHERE (TABLENAME = CAST (? AS VARCHAR(32672) ))
        bind => [Table 4]
DELETE FROM TESTTABLE WHERE (TABLE_ID = ?)
        bind => [20]
Local Exception Stack:
Exception [TOPLINK-4002] (Oracle TopLink Essentials - 2006.8 (Build 060830)): oracle.toplink.essentials.exceptions.DatabaseException
Internal Exception: org.apache.derby.client.am.SqlException: DELETE on table 'TESTTABLE' caused a violation of foreign key constraint 'STRYTESTTABLETBLID' for key (20). The statement has been rolled back.Error Code: -1
Call:DELETE FROM TESTTABLE WHERE (TABLE_ID = ?)
        bind => [20]
Query:DeleteObjectQuery(sem90.ptm2.fhmp.table.Table[id=20])
        at oracle.toplink.essentials.exceptions.DatabaseException.sqlException(DatabaseException.java:295)
        at oracle.toplink.essentials.internal.databaseaccess.DatabaseAccessor.executeDirectNoSelect(DatabaseAccessor.java:639)
        at oracle.toplink.essentials.internal.databaseaccess.DatabaseAccessor.executeNoSelect(DatabaseAccessor.java:688)
        at oracle.toplink.essentials.internal.databaseaccess.DatabaseAccessor.basicExecuteCall(DatabaseAccessor.java:477)
        at oracle.toplink.essentials.internal.databaseaccess.DatabaseAccessor.executeCall(DatabaseAccessor.java:437)
        at oracle.toplink.essentials.internal.sessions.AbstractSession.executeCall(AbstractSession.java:675)
        at oracle.toplink.essentials.internal.queryframework.DatasourceCallQueryMechanism.executeCall(DatasourceCallQueryMechanism.java:213)
        at oracle.toplink.essentials.internal.queryframework.DatasourceCallQueryMechanism.executeCall(DatasourceCallQueryMechanism.java:199)
        at oracle.toplink.essentials.internal.queryframework.DatasourceCallQueryMechanism.deleteObject(DatasourceCallQueryMechanism.java:190)
        at oracle.topl

[b]>
> Is there any other (uni-directional) relationship to
> TestTable?

TestTable Has a Many to Many with Story and a bidirectional OneToMany with Page. And no other entities have a uniDirectional defined back to TestTable.

Inside the Page class i have:[/b]

@OneToMany(cascade={CascadeType.ALL}, mappedBy="p", fetch=FetchType.EAGER)
    public List<TestTable> getTestTables(){
        return testTables;
    }
    
    public void setTestTables(List<TestTable> tables){
        if(tables != null){
            this.testTables = tables;
        }
    }
[Message sent by forum member 'ptm' (ptm)]

http://forums.java.net/jive/thread.jspa?messageID=207022