Jak usuwać encje niekaskadowo w pluginie do minecrafta?

0

Mam problem ponieważ tworzę plugin do minecrafta z wykorzytsaniem funkcjonalności Spring Boota do łatwego manipulowania na bazie. Jako bazę wykorzystuje MariaDB a czasami też PostgresSql. Jeżeli chodzi o komunikację z bazą nie ma problemu. Dzisiaj tworząc plugin na działki napotkałem na problem związany z relacyjnością. otóż stworzyłem sobie 4 Entity: Plot (działka), PlotSetting (czyli ustawiania działki globalne), PlotPlayer (gracz przynależący do działki) i PlotPlayerSettings (czyli ustawienia dla gracza, bo jeżeli w ustawieniach globalnych jest zezwolone niszczenie bloków, a w ustawieniach gracza nie to nie będzie mógł tego robić). Relacje pomiędzy Encjami są takie Plot 1...* PlotPlayer, PlotPlayer 1...1 PlotPlayerSettings, Plot 1...1 PlotSettings. Problem jest taki, że jak chcę usunąć obiekt Plot to usuwa się przywiązany do niego PolotSettings, ale nie usuwają się PlotPlayers i co za tym idzie PlotPlayerSettings. A zależało mi na tym, że przy usunięciu działki usuwają się jej ustawiania + gracze do niej przypisani z ich ustawieniami. A oto moje encje w kodzie:

@Entity
public class Plot {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Integer id;
    private String plotName;

  @OneToOne(mappedBy = "plot", cascade = CascadeType.ALL, orphanRemoval = true)
    private PlotSettings plotSettings;

  @OneToMany(mappedBy = "plot", cascade = CascadeType.ALL)
    private Set<PlotPlayer> plotPlayers = new HashSet<>();
}
@Entity
public class PlotPlayer {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Integer id;
    @ManyToOne(cascade = CascadeType.REFRESH)
    @JoinColumn(name = "plot_id")
    private Plot plot;
    private String playerUUID;
    private String playerName;
    @Enumerated(EnumType.ORDINAL)
    private Role role;

  @OneToOne(mappedBy = "plotPlayer", cascade = CascadeType.ALL, orphanRemoval = true)
    private PlotPlayerSettings plotPlayerSettings;
}
@Entity
public class PlotPlayerSettings {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Integer id;
    @OneToOne
    private PlotPlayer plotPlayer;

    private boolean pickUpItems;
}
@Entity
public class PlotSettings {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Integer id;
    @OneToOne
    private Plot plot;

    private boolean pickUpItems;
}
0

Nie wgryzajac się za mocno w kod

@OneToMany(mappedBy = "plot", cascade = CascadeType.ALL, , orphanRemoval = true)
    private Set<PlotPlayer> plotPlayers = new HashSet<>();

1 użytkowników online, w tym zalogowanych: 0, gości: 1