只是另一个关于 JPA 中多对多关系的问题。我的数据库中有以下结构:
______ ___________ _______
| user | | user2item | | item |
|------| |-----------| |-------|
| id | | user_id | | id |
| name | | item_id | | name |
------ ----------- | type |
-------
现在我想将一个用户的分配更新为给定类型的项目。所以不幸的是我不能简单地做:
user.setItems(newItemList);
因为它会删除对其他类型项目的分配。在普通的旧 SQL 中,我会这样做:
DELETE FROM user2item WHERE user_id = ? AND item_id IN (SELECT id FROM item WHERE type=?);
INSERT INTO user2item (user_id, item_id) VALUES(?,?);
但是因为我使用 JPA 和 QueryDSL 纯 SQL 是没有选择的。