Hibernate: отдельный запланированный повторяющийся поток, который обновляет объект, затем сохраняет его, непоследовательJAVA

Программисты JAVA общаются здесь
Anonymous
Hibernate: отдельный запланированный повторяющийся поток, который обновляет объект, затем сохраняет его, непоследователь

Сообщение Anonymous »

У меня есть сущность, скажем, собака :

Код: Выделить всё

@Entity
public class Dog {
private Long id;

@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
@JoinColumn(name = "dog_id", referecedColumnName = "id")
private Set barks;
}
< /code>
и < /p>
@Entity
public class Bark {
private Long id;
private Long time;
}
< /code>
Это однонаправленное отношение.@PostMapping("start_barks")
public void starBarks(@RequestParam(name = "dog_id") Long id) {
this.dogService.startBarks(id);
}
< /code>
и в службе: < /p>
public void startBarks(long dogId) {
Dog dog = this.dogRepository.findById(dogId);
this.barkManager.start(dog);
}
в Barkmanager :

Код: Выделить всё

@Component
public class BarkManager {
@Autowired
private DogRepository dogRepository;

private final ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(50);

public void start(Dog dog)  {
scheduler.scheduleAtFixedRate(() -> {
executeBark(dog);
}, 10, 5, TimeUnit.SECONDS);
}

private void executeBark(Dog dog)  {
Bark bark = new Bark(System.currentTimeMillis());
dog.getBarks().add(bark);

// so that the barks are saved
Dog savedDog = this.dogRepository.save();
}
}
Таким образом, проблема, с которой я сталкиваюсь, заключается в том, что объекты Bark внутри собаки , которые используются в методе повторной executebark , все отстранены. И хотя я могу получить ссылку на прикрепленную сущность SavedDog , как бы я передал ее к следующей итерации executeBark , если он уже был запланирован на метод начала ? казаться очень эффективным.
Что было бы лучшим решением для этой проблемы?

Подробнее здесь: https://stackoverflow.com/questions/795 ... y-then-sav

Вернуться в «JAVA»