另一个关于JPA多对多关系的问题。我在我的数据库中有以下结构:JPA多对多更新
______ ___________ _______
| user | | user2item | | item |
|------| |-----------| |-------|
| id | | user_id | | id |
| name | | item_id | | name |
------ ----------- | type |
-------
现在我想更新从一个用户到给定类型的项目的assingment。所以很不幸,我不能简单地这样做:
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是没有选择。
感谢您的快速回答 - 这是我刚开始实施的临时解决方法。但我认为必须有一种更优雅的方式来使用花哨的JPA/QueryDSL功能。 – LordHelmchen