David Ezzio updated OPENJPA-236:

    Issue Type: New Feature  (was: Bug)

In fact, there is no way to override the insertion SQL being generated for an 
element class, when its container has a one-way, one-to-many relationship to it.

The workaround is to change the domain model to make the relationship two-way. 

The feature request is that OpenJPA should support overriding all of the SQL 
that it generates for any of the mappings that it supports. 

> 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: New Feature
>          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.

Reply via email to