Hi, ich arbeite derzeit an einer spring boot Anwendung, wo man Bots erstellen kann. Meine Bot entity sieht so aus:
Und meine Stock Entity so:
Im Feld stocks der Bot entity wird mein stock repository durchsucht, das nach allen stocks in dem Feld bot_id nach der aktuellen id des Bots sucht. Damit möchte ich eben in die Liste alle Stocks reinschreiben, die zu diesem Bot gehören. Das funktioniert auch, wenn ich allerdings einen Bot löschen möchte, dann geht das nicht und ich bekomme diesen Fehler:
Wie kann ich die Beziehung so setzen, dass wenn ich einen Bot lösche automatisch alle Stocks, die zu ihm gehören auch gelöscht werden und ich nicht diese exception bekomme?
Java:
@Data
@Entity
@Table(name = "bots")
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class Bot {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@Column(name = "name")
private String name;
@Column(name = "currentMoney", precision = 19, scale = 4)
private BigDecimal currentMoney;
@Column(name = "moneyLeftToInvest")
private BigDecimal moneyLeftToInvest;
@JoinColumn(name = "bot_id")
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, orphanRemoval = true)
private List<Stock> stocks;
@ElementCollection
@CollectionTable(name = "botAlgorithms", joinColumns = @JoinColumn(name = "bot_id"))
@Column(name = "algorithm_name")
private List<Algorithms> algorithms;
}
Und meine Stock Entity so:
Java:
@Data
@Entity
@Table(name = "stocks")
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class Stock {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@Column(name = "bot_id")
private Long botId;
@Column(name = "name")
private StockType stockType;
@Column(name = "amount")
private BigDecimal amount;
}
Im Feld stocks der Bot entity wird mein stock repository durchsucht, das nach allen stocks in dem Feld bot_id nach der aktuellen id des Bots sucht. Damit möchte ich eben in die Liste alle Stocks reinschreiben, die zu diesem Bot gehören. Das funktioniert auch, wenn ich allerdings einen Bot löschen möchte, dann geht das nicht und ich bekomme diesen Fehler:
Code:
ERROR: update or delete on table "bots" violates foreign key constraint
Wie kann ich die Beziehung so setzen, dass wenn ich einen Bot lösche automatisch alle Stocks, die zu ihm gehören auch gelöscht werden und ich nicht diese exception bekomme?