JPA在插入操作之前执行两次select语句

时间:2012-06-14 14:16:39

标签: jpa

我试图坚持多个实体,同时触发一些选择命令进行插入。我在插入之前说了3个选择命令,然后所有这些选择命令在插入操作之前再次点火,任何正文都可以回答这个问题?

1 个答案:

答案 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自动执行的额外一个。