Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[eclipselink-users] UDPATE: Cascading object occasionally dont update/merge, but throw exception. Eclipselink or my bug?

This is the errormessage:

Internal Exception: java.sql.BatchUpdateException:
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 'SQLxxxxxxxxxxxxxxx' defined on 'A'.
Error Code: 20000
Query: UpdateObjectQuery(a)


On Fri, Apr 23, 2010 at 8:24 AM, Raven McSmith
<ravenmcsmith@xxxxxxxxxxxxxx> wrote:
> Hi,
>
> I am having the problem that my object from a cascaded class model
> _sometimes_ don't update/merge but throw an exception.
> This only happens after objects have been persisted and are now (to a
> bigger extend) updated, changed, modified. Small modifications will
> work fine.
> I will give an descriptive example after the model.
>
> My model looks almost like his:
>
> class a
>
> @Entity
> public class A implements Serializable {
>          @Id
>          @GeneratedValue(strategy = GenerationType.TABLE)
>          private int id;
>          private String name;
>          @OneToMany(cascade=CascadeType.ALL)
>          @PrivateOwned
>          private List<B> bList = new ArrayList<B>();
> ....
> }
>
> class b
>
> @Entity
> public class B implements Serializable {
>          @Id
>          @GeneratedValue(strategy = GenerationType.TABLE)
>          private int id;
>          ...
>         @OneToOne(cascade=CascadeType.ALL)
>         private A  nextA;
> ....
> }
>
> My program code makes sure that there is never a cycle in the objects.
> Meaning that no nextA will have an entry of object A where it is self
> defined.
> My problem is not adding objects but deleting/modifying them.
>
> Example:
> When I have several of these object persisted and I am now changing
> one instance of A which had 4 entries in bList, and I am going to
> clear bList and try to merge(), flush() the object, I will get an
> exception, saying that there are duplicate entries for the key ID from
> object A.
> If I just remove one object from the list and the merge() or flush()
> the object with Eclipselink the operation works fine.
> Similarly I think is the situation when changing entries in bList.
> This is really hard to debug, so I just can guess. If I change many
> things (excluding adding), then sometimes the merge(), flush()
> operation throws an exception, but it is just sometimes, so really
> hard to debug.
>
> Do you know any solution to this problem?
> Is it my fault or did I find a bug in Eclipselink?
>
> Thanks
>
> Raven
>


Back to the top