JPA在insert操作之前执行select语句两次
我正在尝试持久化多个实体,同时触发一些用于插入的select命令。我假设在插入之前有3个select命令,那么所有这些select命令在插入操作之前都会再次触发,有人能回答这个问题吗?解决了问题,这是我的解决方案,将帮助其他人 要防止第二次插入前选择,请使用JPA在insert操作之前执行select语句两次,jpa,Jpa,我正在尝试持久化多个实体,同时触发一些用于插入的select命令。我假设在插入之前有3个select命令,那么所有这些select命令在插入操作之前都会再次触发,有人能回答这个问题吗?解决了问题,这是我的解决方案,将帮助其他人 要防止第二次插入前选择,请使用Session.load()或EntityManager.getReference() session.load()方法最初并不加载任何内容,它只是为对象创建一个代理,并避免对数据库的命中 在这里,session.load()中传递的id参数
Session.load()
或EntityManager.getReference()
session.load()
方法最初并不加载任何内容,它只是为对象创建一个代理,并避免对数据库的命中
在这里,
session.load()
中传递的id参数来自我之前启动的select sql,我担心的是我又一次得到了hibernate正在执行的相同sql语句,现在我停止了hibernate框架使用load方法再次触发相同的select sql,现在只触发了一个select语句,而不是hibernate自动执行的额外语句。包括您的代码和sql日志
User u = new User();
u.setUserStatusType( session.load(UserStatusType.class, new Long(id));
session.persis(u);