#orphanedRowAction delete doesnt work on relation OneToOne

3 messages · Page 1 of 1 (latest)

pearl eagle
#

I'm trying to update with a .save(
calendarEvent: {
recurrenceTimePolicy: null
})

But it's doesnt work, i'm getting this error:
ERROR: null value in column "calendar_event_id" of relation "recurrence_time_policies" violates not-null constraint

If i remove the not null. constraint it delete calendar_id from recurrence_time_policies but the row is still there.
I will send entities in the next message

#

@Entity('recurrence_time_policies')
@Unique(['calendarEvent'])
export class RecurrenceTimePolicy {
@PrimaryGeneratedColumn({ name: 'recurrence_time_policy_id' })
id!: number

@OneToOne(
    () => CalendarEvent,
    (calendarEvent) => calendarEvent.recurrenceTimePolicy,
    {
        onDelete: 'CASCADE',
        onUpdate: 'CASCADE',
        orphanedRowAction: 'delete',
    },
)
@JoinColumn({ name: 'calendar_event_id' })
calendarEvent!: CalendarEvent

@Column({ name: 'calendar_event_id' })
calendarEventId!: number

@Column({
    name: 'frequency',
    type: 'enum',
    enum: RecurrenceFrequency,
    enumName: 'recurrence_frequencies',
    nullable: false,
})
frequency!: RecurrenceFrequency

@Column({ name: 'interval', type: 'int', nullable: false, default: 1 })
interval!: number

@Column({
    name: 'byweekday',
    type: 'smallint',
    array: true,
    nullable: true,
})
byWeekday?: number[] | null

@Column({
    name: 'bymonthday',
    type: 'smallint',
    array: true,
    nullable: true,
})
byMonthDay?: number[] | null

@Column({ name: 'bysetpos', type: 'smallint', array: true, nullable: true })
bySetPos?: number[] | null

@Column({ name: 'bymonth', type: 'smallint', array: true, nullable: true })
byMonth?: number[] | null

@Column({ name: 'byhour', type: 'smallint', array: true, nullable: true })
byHour?: number[] | null

@Column({ name: 'byminute', type: 'smallint', array: true, nullable: true })
byMinute?: number[] | null

@Column({ name: 'count', type: 'int', nullable: true })
count?: number | null

@Column({ name: 'until', type: 'timestamptz', nullable: true })
until?: Date | null

}

#

@Entity('calendar_events')
@Check('ends_at IS NOT NULL AND starts_at IS NOT NULL AND ends_at > starts_at')
export class CalendarEvent {
@ApiProperty({ type: Number })
@PrimaryGeneratedColumn({ name: 'calendar_event_id' })
id!: number

@ApiPropertyOptional({ type: () => [CalendarEventSegment] })
@OneToMany(() => CalendarEventSegment, (segment) => segment.calendarEvent, {
    cascade: true,
})
public calendarEventSegments: CalendarEventSegment[]

@ApiPropertyOptional({ type: () => [CalendarEventParticipant] })
@OneToMany(
    () => CalendarEventParticipant,
    (participant) => participant.calendarEvent,
    { cascade: true },
)
public calendarEventParticipants: CalendarEventParticipant[]

@ApiPropertyOptional({ type: () => RecurrenceTimePolicy })
@OneToOne(() => RecurrenceTimePolicy, (policy) => policy.calendarEvent, {
    eager: true,
    cascade: true,
})
public recurrenceTimePolicy?: RecurrenceTimePolicy | null

@ApiPropertyOptional({ type: () => RecurrenceMeterPolicy })
@OneToOne(() => RecurrenceMeterPolicy, (policy) => policy.calendarEvent, {
    eager: true,
    cascade: true,
    orphanedRowAction: 'delete',
})
public recurrenceMeterPolicy?: RecurrenceMeterPolicy | null

}