Page 1 of 1

JPA -Erbschaft Wie löscht man die Elternklasse, wenn die untergeordnete Klasse gelöscht wird?

Posted: 13 Apr 2025, 10:10
by Anonymous
Angenommen, ich habe zwei Entitäten < /p>

Code: Select all

package com.srilakshmikanthanp.assets.notification

import com.srilakshmikanthanp.assets.notification.assetsurvey.AssetSurveyNotification
import com.srilakshmikanthanp.assets.user.User
import jakarta.persistence.*
import org.hibernate.annotations.*
import java.time.Instant

@EntityListeners(NotificationEntityListener::class)
@Inheritance(strategy = InheritanceType.JOINED)
@Entity
class Notification(
@Column(nullable = false)
@Id
@GeneratedValue(strategy = GenerationType.UUID)
var id: String? = null,

@Column(nullable = false)
var title: String,

@Column(nullable = false)
var description: String,

@Column(nullable = false)
var read: Boolean = false,

@ManyToOne
@JoinColumn(name = "recipient_id", nullable = false)
var recipient: User,

@ManyToOne
@JoinColumn(name = "sender_id", nullable = false)
var sender: User,

@TenantId
var organizationId: String? = null,

@Column(nullable = false, updatable = false)
@CreationTimestamp
var createdAt: Instant? = null,

@Column(nullable = false)
@UpdateTimestamp
var updatedAt: Instant? = null,
)
< /code>
package com.srilakshmikanthanp.assets.notification.assetsurvey

import com.srilakshmikanthanp.assets.asset.survey.AssetSurvey
import com.srilakshmikanthanp.assets.notification.Notification
import com.srilakshmikanthanp.assets.user.User
import jakarta.persistence.Entity
import jakarta.persistence.JoinColumn
import jakarta.persistence.ManyToOne
import jakarta.persistence.OneToOne
import jakarta.persistence.PreRemove
import jakarta.persistence.PrimaryKeyJoinColumn
import jakarta.persistence.Table
import jakarta.persistence.UniqueConstraint
import org.hibernate.annotations.OnDelete
import org.hibernate.annotations.OnDeleteAction
import java.time.Instant

@Entity
@PrimaryKeyJoinColumn(name = "notification_id")
@Table(uniqueConstraints = [UniqueConstraint(columnNames = ["notification_id"])])
@OnDelete(action = OnDeleteAction.CASCADE)
class AssetSurveyNotification(
@ManyToOne
@OnDelete(action = OnDeleteAction.CASCADE)
@JoinColumn(name = "asset_survey_id", nullable = false)
var survey: AssetSurvey,

id: String? = null,
title: String,
description: String,
recipient: User,
sender: User,
read: Boolean = false,
createdAt: Instant? = null,
updatedAt: Instant? = null,
) : Notification(
id = id,
title = title,
description = description,
recipient = recipient,
sender = sender,
read = read,
createdAt = createdAt,
updatedAt = updatedAt
)
Wenn das Assetsurvey jetzt gelöscht wird, kaskadiert es in Assetsurveynotification , aber es wird nicht zur Benachrichtigung kann es irgendeine Möglichkeit haben, dies zu tun? Ich habe nur eine Benachrichtigung als übergeordnetes übergeordnet, da viele Art von Benachrichtigung auch für eine gemeinsame API vorhanden bin. Und ist die Vererbung, die ich benutze, für meinen Zweck in Ordnung oder ich muss dies ändern?