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