1

我有 2 个表用户和团队的休眠多对多映射。这将创建一个包含用户 ID 和团队 ID 映射的 users_teams 连接表。我希望能够仅使用连接表来更新用户和团队,即鉴于我知道用户 ID 和团队 ID,我只想将这些 ID 插入连接表中。我试过这个,但它不起作用。这甚至可能吗?想要这样做的原因是因为出于性能原因,DTO 将只有 id 而不是完整的对象。

4

1 回答 1

0

您不能使用“正常”会话(或实体管理器)操作(如保存、更新等)直接在连接表中插入外键,只使用 id,因为维护关系(通过外键)是 Hibernate 和 Hibernate 的责任从您的映射实体获取此信息,并且您的映射实体通过引用对象而不是它们的 id 来维护关系。

但是,您可以使用本机查询功能插入 id',您可以在其中编写插入 sql 并传递参数。例如,使用 Hibernate 会话,您可以使用

session.createSQLQuery("INSERT INTO USERS_TEAMS (USERID,TEAMID) VALUES(?,?)");

或者

entitymanager.createNativeQuery("INSERT INTO USERS_TEAMS (USERID,TEAMID) VALUES(?,?)")
于 2013-11-13T19:56:22.707 回答