Re: Aplaws 5.2 Pdl problem
Matthew Booth <[email protected]> Fri, 16 Jul 2004 16:59:42 +0100
| Newsgroups | gmane.linux.redhat.ccm.general |
|---|---|
| Message-ID | <[email protected]> |
On Fri, 2004-07-16 at 16:12, David Young wrote:
> Hi,
>
> I'm using Aplaws 5.2, and I am developing the following pdl for
> attaching data to a User Object. I have used the UserAuthentication pdl
> as a template for this pdl.
>
>
> ###################################
>
> object type NotificationUserProfile {
>
> BigDecimal id = notification_user_profiles.profile_id INTEGER;
>
> unique String [0..1] mobilePhoneNumber =
> notification_user_profiles.mobile_phone_number VARCHAR(50);
>
> // ... other stuff cut out
>
> User [1..1] user = join notification_user_profiles.user_id to
> users.user_id;
>
> object key (id);
> join notification_user_profiles.profile_id to parties.party_id;
>
> // Avoid deletion of parties with the profile
> delete {
> do {
> delete from notification_user_profiles where profile_id = :id
> }
> }
>
> insert {
> do {
> insert into notification_user_profiles
> (profile_id, email_varified, mobile_varified,
> event_sms, event_email, news_sms, news_email,
> meetings_sms, meetings_email,
> mobile_phone_number, user_id)
> values
> (:id, :emailVarified, :mobileVarified,
> 'N', 'N', 'N', 'N', 'N', 'N',
> :mobilePhoneNumber, :user.id)
> }
> }
>
> update {
> do {
> update notification_user_profiles
> set email_varified = :emailVarified,
> mobile_varified = :mobileVarified,
> event_sms = :eventSMS,
> event_email = :eventEmail,
> news_sms = :newsSMS,
> news_email = :newsEmail,
> meetings_sms = :meetingsSMS,
> meetings_email = :meetingsEmail,
> mobile_phone_number = :mobilePhoneNumber,
> user_id = :user.id
> where id = :id
> }
> }
>
> add user {}
> remove user {}
>
> }
>
> ################################################
>
>
> This seems to work fine up until you try to delete a user using the
> standard admin tools. Deleting the user violates a foreign key type
> constraint on the notification_user_profiles table and therefore fails.
>
> I'm unsure how I go about changing the behaviour so that the delete
> operation on the user cascades to the profile.
>
> I can't work out why this fails for this profile, but is successful for
> the UserAuthentication.
In general, there's no need any more to explicitly enter sql for all
your events. Persistence will just generate them.
Try something like this:
object type NotificationUserProfile {
BigDecimal id = notification_user_profiles.profile_id INTEGER;
unique String [0..1] mobilePhoneNumber =
notification_user_profiles.mobile_phone_number VARCHAR(50);
// ... other stuff cut out
object key (id);
}
association {
composite User[1..1] user = join notification_user_profiles.user_id
to users.user_id;
component NotificationUserProfile[0..1] notificationUserProfile =
join users.user_id to notification_user_profiles.user_id;
}
Notice I've made User composite and NotificationUserProfile component.
This says that the profile is a component of the user, and should be
deleted with the user.
NB: this works fine on 6.1, and is supposed to work fine on 5.2. If it
doesn't, you may have to play with it a bit :)
Matt
--
Redhat-ccm-list mailing list
[email protected]
https://www.redhat.com/mailman/listinfo/redhat-ccm-list
Archives: https://www.redhat.com/pipermail/redhat-ccm-list/