У меня есть объект процедуры, а процедура содержит список объектов карты. Любая карта может быть перемещена между процедурами. Так что теперь, если я сделаю шаг (на самом деле установил Procedure карты в другую процедуру) и сразу же обнаружу AllAll () в следующей строке, он возвращает [] для обеих процедур.
пытался использовать saveAndFlush () вместо save () перед findAll (), но тоже не работает.
лица:
@Entity
@Table(name = "procedures")
public class Procedure {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private long id;
@OneToMany(mappedBy = "procedure", cascade = CascadeType.ALL, fetch = FetchType.LAZY)
@JsonManagedReference
private List<Card> cards = new ArrayList<>();
//...getter setter constructor
}
@Entity
@Table(name = "cards")
public class Card {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private long id;
@ManyToOne
@JsonBackReference
private Procedure procedure;
//...getter setter constructor
}
Контроллер
@GetMapping("/card/move/{cid}/{nextPid}")
@Transactional
public List<Procedure> moveCard(@PathVariable Long cid, @PathVariable Long nextPid) {
return cardService.moveCard(cid, nextPid);
}
внутренняя служба
List<Procedure> moveCard(Long cid, Long nextPid) {
Card card = cardRepository.findById(cid).get();
Procedure toProcedure = procedureService.findById(nextPid);
card.setIndex(toProcedure.getCards().size());
card.setProcedure(toProcedure);
cardRepository.saveAndFlush(card);
return procedureService.findAll();
}
например. если у меня есть 1 карта в процедуре 1, после того, как я вызываю этот API, он возвращает следующее:
[
{
"id": 1,
"cards": [],
},
{
"id": 2,
"cards": [],
}
]
но я ожидаю:
[
{
"id": 1,
"cards": [],
},
{
"id": 2,
"cards": [{id: 123}],
}
]