Mam dwie powiązane klajty z przypisami JPA. Alarm i status. Jeden alarm może mieć jeden status.JPA nie generuje "przy usuniętym zbiorze zerowym" Ograniczenia FK
To, czego potrzebuję, to móc usunąć jeden status i "propagować" wartość pustą do alarmów znajdujących się w tym statusie, który został usunięty.
To znaczy, że klucz obcy należy zdefiniować jako "w zestawie usunięć zerowych".
@Entity
public class Alarm {
@Id
@GeneratedValue(strategy=GenerationType.SEQUENCE, generator="sequence")
@SequenceGenerator(name="sequence", sequenceName="alarm_pk_seq")
private Integer id;
@OneToOne(cascade=CascadeType.ALL)
@JoinColumn(name="idStatus")
private Status status;
// get/set
}
@Entity
public class Status {
@Id
@Column(name="idStatus")
private Integer id;
private String description;
// get/set
}
przykład:
Przed:
STATUS
id description
1 new
2 assigned
3 closed
ALARMS
id status
1 1
2 2
3 2
Po (usunięcie stanu id = 2)
STATUS
id description
1 new
3 closed
ALARMS
id status
1 1
2 NULL
3 NULL
mi stosując hibernacji i PostgreSQL automatyczne generowanie bazy z kodu źródłowego. Próbowałem z każdym możliwym CascadeType bez powodzenia.
Czy coś jest nie tak z kodem? Czy można to zrobić za pomocą JPA?
Dziękuję. Masz rację, właśnie zmieniłem to na relację ManyToOne i dodałem parametr zerowy = true, ale wynik jest wciąż taki sam :( –