使用休眠时是否可以手动更新连接表?

时间:2013-11-13 19:10:44

标签: hibernate join

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

1 个答案:

答案 0 :(得分: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(?,?)")