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