openjpa-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "David Ezzio (JIRA)" <j...@apache.org>
Subject [jira] Updated: (OPENJPA-236) No apparent way to generate all required SQL within a class derived from FullClassStrategy
Date Mon, 07 May 2007 17:06:15 GMT

     [ https://issues.apache.org/jira/browse/OPENJPA-236?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

David Ezzio updated OPENJPA-236:
--------------------------------

    Description: 
FullClassStrategy has several optional methods for overriding OpenJPA's generation of SQL.
However, in a simple case, there is no apparent way to generate the required SQL within a
class derived from FullClassStrategy.

The model consists of two classes, BizA which has a one-way, one-to-many relationship to BizB.
The relationship is mapped with a FK within the BizB table.

The custom class strategy BizBMapping attempts to insert a BizB record and is able to do so,
provided that it is not contained within a BizA collection. Otherwise, the attempt to persist
a BizA with a contained BizB yields a SQL exception because OpenJPA generates additional SQL
that conflicts with the SQL generated within BizBMapping.customInsert. Even if OpenJPA did
not generate conflicting insert statement, there is no apparent way to get the value for the
A_ID column within the BizBMapping.customInsert method.

This issue is critical for users who want to substitute their own SQL (such as calls to stored
procedures) for all of the OpenJPA generated SQL.

Synopsis of the output log:

INSERT INTO BIZB (ID, INFO) VALUES (?, ?) [params=(String) B22047141, (String) random]
INSERT INTO BizA (id, info) VALUES (?, ?) [params=(String) A32968849, (String) random]
INSERT INTO BizB (A_ID) VALUES (?) [params=(String) A32968849]
SQLException: Column 'ID'  cannot accept a NULL value. 


  was:
FullClassStrategy has several optional methods for overriding OpenJPA's generation of SQL.
However, in a simple case, there is no apparent way to generate the required SQL within a
class derived from FullClassStrategy.

The model consists of two classes, BizA which has a one-way, one-to-many relationship to BizB.
The relationship is mapped with an inverse key within the BizB table.

The custom class strategy BizBMapping attempts to insert a BizB record and is able to do so,
provided that it is not contained within a BizA collection. Otherwise, the attempt to persist
a BizA with a contained BizB yields a SQL exception because OpenJPA generates additional SQL
that conflicts with the SQL generated within BizBMapping.customInsert. Even if OpenJPA did
not generate conflicting insert statement, there is no apparent way to get the value for the
A_ID column within the BizBMapping.customInsert method.

This issue is critical for users who want to substitute their own SQL (such as calls to stored
procedures) for all of the OpenJPA generated SQL.

Synopsis of the output log:

INSERT INTO BIZB (ID, INFO) VALUES (?, ?) [params=(String) B22047141, (String) random]
INSERT INTO BizA (id, info) VALUES (?, ?) [params=(String) A32968849, (String) random]
INSERT INTO BizB (A_ID) VALUES (?) [params=(String) A32968849]
SQLException: Column 'ID'  cannot accept a NULL value. 



> No apparent way to generate all required SQL within a class derived from FullClassStrategy
> ------------------------------------------------------------------------------------------
>
>                 Key: OPENJPA-236
>                 URL: https://issues.apache.org/jira/browse/OPENJPA-236
>             Project: OpenJPA
>          Issue Type: Bug
>          Components: kernel
>    Affects Versions: 0.9.7
>            Reporter: David Ezzio
>         Attachments: OpenJPABugCustomSQL.zip
>
>
> FullClassStrategy has several optional methods for overriding OpenJPA's generation of
SQL. However, in a simple case, there is no apparent way to generate the required SQL within
a class derived from FullClassStrategy.
> The model consists of two classes, BizA which has a one-way, one-to-many relationship
to BizB. The relationship is mapped with a FK within the BizB table.
> The custom class strategy BizBMapping attempts to insert a BizB record and is able to
do so, provided that it is not contained within a BizA collection. Otherwise, the attempt
to persist a BizA with a contained BizB yields a SQL exception because OpenJPA generates additional
SQL that conflicts with the SQL generated within BizBMapping.customInsert. Even if OpenJPA
did not generate conflicting insert statement, there is no apparent way to get the value for
the A_ID column within the BizBMapping.customInsert method.
> This issue is critical for users who want to substitute their own SQL (such as calls
to stored procedures) for all of the OpenJPA generated SQL.
> Synopsis of the output log:
> INSERT INTO BIZB (ID, INFO) VALUES (?, ?) [params=(String) B22047141, (String) random]
> INSERT INTO BizA (id, info) VALUES (?, ?) [params=(String) A32968849, (String) random]
> INSERT INTO BizB (A_ID) VALUES (?) [params=(String) A32968849]
> SQLException: Column 'ID'  cannot accept a NULL value. 

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


Mime
View raw message