我试图坚持多个实体,同时触发一些选择命令进行插入。我在插入之前说了3个选择命令,然后所有这些选择命令在插入操作之前再次点火,任何正文都可以回答这个问题?
答案 0 :(得分:1)
解决了问题,这是我的解决方案,将帮助其他人
要防止在INSERT之前第二次进行SELECT,请使用Session.load()
或EntityManager.getReference()
User u = new User();
u.setUserStatusType( session.load(UserStatusType.class, new Long(id));
session.persis(u);
session.load()
方法最初不会加载任何内容,它只是为对象创建代理并避免命中数据库。
这里传递的session.load()
中的id参数来自我之前解雇过的select sql,我担心的是我再次获得了同样的sql语句hibernate正在做什么,现在我停止了hibernate框架的解雇同样使用load方法再次选择sql,现在只有一个select语句被触发,而不是hibernate自动执行的额外一个。