Я нашел решение, но это очень разочаровывает.
Короче говоря, я заменил эту строку:
LaundryList.em () сливаются (laundryList);.
с этим:
LaundryList updateLaundryList = LaundryList.em().merge(laundryList);
updateLaundryList.save();
Длинный ответ: Play изменил способ работы JPA. В приведенном выше случае я участвовал в транзакции (это было ясно показано в журналах и в том факте, что, если я попытаюсь начать транзакцию, возникнет исключение, говорящее мне, что я фактически уже выполняю транзакцию). Однако, несмотря на это, выполнение em().merge
фактически не делало никаких вставок / обновлений в сторону базы данных, как показано в журналах.
Да, в какой-то момент на своем сайте они говорят что-то вроде: «нам не нравится, как JPA выполняет автосинхронизацию данных, когда вы находитесь в транзакции, поэтому вам не нужно вызывать persist / merge, но вам нужно вызывать refresh of your infact, чтобы отменить ваши изменения, и нам это не нравится, поэтому мы изменили его: теперь вам нужно явно сохранять, или ничего не обновляется ".
Они также говорят (и здесь я нашел фактическую цитату):
"Во время последовательных запросов извлекайте объект из базы данных, используя идентификатор объекта, обновляйте его и сохраняйте снова."
Но это все. Нет примеров кода нет ничего. Так как они изменили поведение фреймворка, который НАМНОГО более известен, чем Play (а именно JPA), они должны действительно указать это более четко или, по крайней мере, изменить имена классов, сделать обертки, скажем, что они создали свой собственный PlayPersistenceManager или что-то подобное .
И нет, лично я не думаю, что их путь лучше. В целом, вы НАМНОГО более вероятно сохраните / обновите что-либо, чем отмените некоторые изменения, поэтому лучше, если постоянное / обновление происходит автоматически (без дополнительного кода) и вам нужно явно отменить.