The @OrderBy annotation does not guarantees that the in-memory collection is ordered. The @OrderColumn does.
The currentPlaylist wasn't being updated on save and on delete. This was causing an OptimisticLockException when trying to save the same playlist twice in a row.