第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

JPA 在刪除時(shí)級(jí)聯(lián)一個(gè)抽象/繼承類

JPA 在刪除時(shí)級(jí)聯(lián)一個(gè)抽象/繼承類

慕尼黑5688855 2022-11-30 11:19:51
我有一個(gè)抽象類TreeNode。我從他那里繼承了課程Country和Location。然后我有一個(gè)Role包含預(yù)定義角色(如管理員、用戶等)的類。這兩個(gè)類在MappedRole該類中映射在一起。mappedRole 的數(shù)據(jù)庫(kù)表有列 treenode_id role_id 和 mappedRole_id。數(shù)據(jù)庫(kù)中的表看起來(lái)很像我有一個(gè)國(guó)家和位置表,因?yàn)槲沂褂肨able_per_Class. 因此,表 MappedRole 沒有用于國(guó)家和位置的外鍵。mappedRole 中的 treenode_id 列包含其映射到的類的 ID。JPA 獲得與兩個(gè)表上的大連接的關(guān)系。這是我的 MappedRole 類:@Table(uniqueConstraints = { @UniqueConstraint(columnNames = { "TREENODE_ID", "ROLE_ID" }) }, name = "mappedrole")@NamedQueries({ @NamedQuery(name = "mappedRole.checkIfUserExist", query = "SELECT count(mr.role) FROM MappedRole mr WHERE mr.role =?1") })public class MappedRole implements Serializable {    private static final long serialVersionUID = 1L;    @Id    @GeneratedValue(strategy = GenerationType.AUTO)    private long id;    @ManyToOne(cascade = { CascadeType.REMOVE }, fetch = FetchType.EAGER)    @JoinColumn(name = "TREENODE_ID", nullable = false)    private TreeNode treeNode;    @ManyToOne(cascade = { CascadeType.MERGE, CascadeType.REMOVE, CascadeType.REFRESH }, fetch = FetchType.EAGER)    @JoinColumn(name = "ROLE_ID")    private Role role;樹節(jié)點(diǎn)類:@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)public abstract class TreeNode extends Observable {        @Id    @GeneratedValue(strategy = GenerationType.AUTO)    protected long id;和位置類:@Entity@Table(name = "standort")@NamedQuery(name = "standort.findAll", query = "SELECT s FROM Standort s order by s.name desc")public class Standort extends TreeNode implements Comparable<Standort>, Serializable {如果我現(xiàn)在刪除一個(gè)位置,即使我有 .mappedRole 也不會(huì)被刪除CascadeType.REMOVE。如何讓 jpa 將位置的刪除操作級(jí)聯(lián)到 mappedRole 表?
查看完整描述

1 回答

?
藍(lán)山帝景

TA貢獻(xiàn)1843條經(jīng)驗(yàn) 獲得超7個(gè)贊

級(jí)聯(lián)僅適用于聲明它的實(shí)體。即,


public class MappedRole {


  @ManyToOne(cascade = { CascadeType.REMOVE }, fetch = FetchType.EAGER)

  @JoinColumn(name = "TREENODE_ID", nullable = false)

  private TreeNode treeNode;

當(dāng)刪除a時(shí),應(yīng)刪除所有對(duì)應(yīng)TreeNode的 s 。MappedRole


您似乎在or中沒有反向@OneToMany關(guān)系,因此當(dāng)您刪除 a or時(shí),JPA 可以級(jí)聯(lián)任何內(nèi)容都沒有關(guān)系。TreeNodeStandortTreeNodeStandort


像這樣嘗試:


@MappedSuperclass

@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)

public abstract class TreeNode ... {


  @OneToMany(cascade= { CascadeType.REMOVE }, mappedBy="treeNode" )

  private List<MappedRole> mappedRoles;

并確保將每個(gè)MappedRole也放入mappedRoles其擁有的列表中TreeNode。


查看完整回答
反對(duì) 回復(fù) 2022-11-30
  • 1 回答
  • 0 關(guān)注
  • 98 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)