1 回答

TA貢獻1893條經(jīng)驗 獲得超10個贊
您需要使用 SpringData 或使用EntityManager. 您需要保存并刷新更改,它將觸發(fā)刪除操作。
如果更改未正確保存在 DB 中,您可能需要使用@Transactionalspring 包中的 delete 方法進行注釋。
Event event = eventService.getEventById(id);
event.removeUsers(userIds);
eventRepository.saveAndFlush(event);
另外,請記住,列表應(yīng)該是同步的,如果您從事件中刪除用戶,則應(yīng)該從用戶中刪除該事件。
根據(jù)我的經(jīng)驗,最好使用帶有 ID 的中間表來保持多對多關(guān)系。通過這種方式,您可以跟蹤createdAt,updatedAt或createdBy,等屬性modifiedBy。User最大的優(yōu)點是它變成了從toUserEvent和 from Eventto的兩個一對多關(guān)系UserEvent,您可以創(chuàng)建一個UserEventRepository并進行優(yōu)化查詢,例如findByUser(User u)or findByEvent(Event e)。
而且,從性能角度來看,最好使用Set而不是List. Hibernate 將觸發(fā)較少的更新查詢。只需在Vlad Mihalcea 的博客上了解一下
添加回答
舉報