[
https://issues.apache.org/jira/browse/OPENJPA-1550?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Donald Woods resolved OPENJPA-1550.
-----------------------------------
Resolution: Fixed
Fix Version/s: (was: 1.2.3)
Applied to 13x and trunk.
> When batchLimit=-1 or >1 and an exception is caused, the params and
> failedObject are missing from the resultant exception.
> --------------------------------------------------------------------------------------------------------------------------
>
> Key: OPENJPA-1550
> URL: https://issues.apache.org/jira/browse/OPENJPA-1550
> Project: OpenJPA
> Issue Type: Bug
> Components: jdbc
> Affects Versions: 1.2.2, 1.3.0, 2.0.0-beta2
> Reporter: Heath Thomann
> Assignee: Donald Woods
> Priority: Minor
> Fix For: 1.3.0, 2.0.0
>
> Attachments: OPENJPA-1550-13x.patch, OPENJPA-1550-trunk.patch,
> OPENJPA-1550.diff.txt
>
>
> Exception reporting is different depending on the value of batchLimit. To
> describe and demonstration this problem, lets take the following Entitiy:
> @Entity
> public class Ent1 {
> @Id
> private int pk;
> private String name;
> .....
> }
> As a test, lets assume that we have an Ent1 with pk=200 already defined in
> the DB and our test will attempt to create and persist another Ent1 with
> pk=200 (i.e. a duplicate key). In so doing we get the following exception as
> indicated by the batchLimit settings:
> batchLimit=0 or batchLimit=1
> Caused by: <openjpa-1.2.2-SNAPSHOT-r422266:889769M nonfatal store error>
> org.apache.openjpa.persistence.EntityExistsException: The statement was
> aborted because it would have caused a duplicate key value in a unique or
> primary key constraint or unique index identified by 'SQL100301111328870'
> defined on 'ENT1'. {prepstmnt 33038075 INSERT INTO Ent1 (pk, name) VALUES (?,
> ?) [params=(int) 200, (String) twohundred]} [code=20000, state=23505]
> FailedObject: siemens75007.e...@19d0e0b
> when batchLimit=-1 or >1
> Caused by: <openjpa-1.2.2-SNAPSHOT-r422266:889769M nonfatal store error>
> org.apache.openjpa.persistence.EntityExistsException: The statement was
> aborted because it would have caused a duplicate key value in a unique or
> primary key constraint or unique index identified by 'SQL100301111328870'
> defined on 'ENT1'.
> FailedObject: prepstmnt 33038075 INSERT INTO Ent1 (pk, name) VALUES (?, ?)
> [org.apache.openjpa.jdbc.kernel.JDBCStoreManager$CancelPreparedStatement]
> Notice that when batchLimit=[0,1], the exception lists the prepared statement
> used along with the params which caused the failure, as well as the
> 'FailedObject'. Furthermore, calling 'getFailedObject' on the resultant
> exception will give the caller the entity which caused the failure. In
> contrast, when batchLimit=-1 or a value greater than 1, we can see that the
> exception message is missing the prepared statement info, however, it is
> presented in the 'FailedObject'. The params are also missing from the
> prepared statement. A call to 'getFailedObject' on the resultant exception
> will NOT give the caller the entity which caused the exception.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.