-2

我正在尝试保留多个实体,同时这样做会触发一些选择命令进行插入。我在插入之前说过 3 个选择命令,然后所有这些选择命令在插入操作之前又被触发一次,任何人都可以回答这个问题吗?

4

1 回答 1

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()方法最初不加载任何内容,它只是为对象创建一个代理并避免对数据库的影响。

这里传入的 id 参数session.load()来自我之前触发的 select sql,我担心的是我再次获得了 hibernate 正在执行的相同 sql 语句,现在我停止 hibernate 框架再次使用 load 方法触发相同的 select sql现在只有一个 select 语句被触发,而不是 hibernate 自动执行的额外语句。

于 2012-06-15T09:36:08.163 回答