如何解决如何防止不必要的插入选择?
| 我有以下情况(在Java / Hibernate中): 我有两个实体类:X和Y。X有一个与Y的@ManyToOne关联,该关联没有级联。 我创建X的(非托管)实例x和Y的(非托管)实例y,并在x中填充对y的引用。 y的唯一填充字段是主键。 实体y在基础数据库中已经有对应的行,但是实体x是新的。 我坚持实体x。 当我执行此方案时,我希望看到一个查询:INSERT x。但是,实际上发生的是Hibernate执行两个查询: 选择y 插入x 此外,我还注意到在x保持不变之后,对y的引用实际上并没有被管理,并且会话中没有Y的实例!那么,为什么对y进行选择呢?有什么方法可以防止这种行为?解决方法
您不需要(实际上不应该)手动实例化Y。您可以对此进行变型(取决于您的配置)
Y y = (Y) session.load(Y.class,pk);
这不会从数据库中检索Y,而是加载仅由您提到的pk组成的代理。
然后,将y分配给x,并持久保留x的行为将符合您的预期。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。