Jpa наследство, как удалить родительский класс, когда ребенок удаляется?JAVA

Программисты JAVA общаются здесь
Anonymous
Jpa наследство, как удалить родительский класс, когда ребенок удаляется?

Сообщение Anonymous »

Предположим, у меня есть две сущности < /p>

Код: Выделить всё

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
)
Теперь, когда AssetRevee удаляется, это каскады для AssetRveInotification , но это не каскатся с уведомлением Есть ли способ сделать это? Я разместил только уведомление в качестве родителя из -за многих типов уведомлений, присутствующих также для некоторого общего API, я могу просто использовать уведомление о базовом классе , поэтому, если я сделаю отдельную таблицу для всех типов уведомлений, мне может потребоваться дублировать API на основе типа. И наследство, которое я использую, в порядке для моей цели, или мне нужно изменить это?


Подробнее здесь: https://stackoverflow.com/questions/795 ... is-deleted

Вернуться в «JAVA»