[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
Re: [eclipselink-users] Sequences set via-triggers and the@SequenceGenerator annotation
|
If ALL the tables in persistence unit are equipped with the triggers
then it's easier to subclass the database platform:
class OraclePlatformWithIdentity extends OraclePlatform {
public OraclePlatformWithIdentity{
super();
setSupportsIdentity(true);
}
public boolean supportsSequenceObjects()
{
return false;
}
}
Pass the subclassed platform name through persistence unit
property:
eclipselink.target-database
-> "OraclePlatformWithIdentity"
Alternatively, if only SOME tables use triggers and
other use sequence objects in the original way then you need to use
SessionCustomizer:
// set the flag in OraclePlatform indicating that
it supports "Identity"
OraclePlatform platform =
(OraclePlatform)session.getLogin().getPlatform();
platform.setSupportsIdentity(true);
// change each sequence associated with
table with a trigger to behave like Identity
((NativeSequence)platform.getSequence("SequenceToBeChanged")).setShouldUseIdentityIfPlatformSupports(true);
Hope that helps,
Andrei
----- Original Message -----
Sent: Friday, October 17, 2008 9:14 AM
> Here's the situation.
>
> I have a database where the pk sequence for each table is set via
an
> insert trigger. All of these triggers are dumb, and don't check
to
> make sure the pk is not already set in the row before grabbing
the
> nextval and setting it.
>
> I discovered this problem
while running some tests of doing cascade
> persists, and my sequence and
hence PK of a parent table was being
> incremented twice. Once by
EclipseLink a second time via the insert
> trigger.
>
> Is
there some sort of way I can tell EclipseLink to Post-Fetch the
> sequence
after the insert and figure out relationships that way or
> would I be
better off just biting the bullet and making all my
> triggers more
intelligent?
>
> Thanks,
> Tim
>
_______________________________________________
> eclipselink-users
mailing list
>
eclipselink-users@xxxxxxxxxxx>
https://dev.eclipse.org/mailman/listinfo/eclipselink-users>