代码之家  ›  专栏  ›  技术社区  ›  M.J.

插入toplink后无法加载实体

  •  0
  • M.J.  · 技术社区  · 15 年前

    我使用toplink作为ORM工具,我面临一个特殊的问题。我在会话中插入一个实体,然后在下一行中,如果我尝试加载同一个实体,我将无法获取该实体,相反,它将返回null。但同样的问题,如果我尝试使用hibernate,那么它可以正常工作。有谁能帮忙吗。

    Address address = new Address();
    address.setAddressId("1");
    address.setPincode(1);
    uow2.registerNewObject(address);
    ExpressionBuilder builder = new ExpressionBuilder();
    Expression expr = builder.get("addressId").equal("1");
    Address address1 = (Address)uow2.readObject(Address.class, expr);
    

    最后我得到address1为空。我不明白,因为我是用同一个键插入对象,然后试图检索它。。。请帮帮我。。。

    1 回复  |  直到 15 年前
        1
  •  2
  •   Gordon Yorke    15 年前

    这是本地TopLink/EclipseLink代码。您只是在UnitOfWork中“注册”地址,而UnitOfWork在提交之前不会写出地址。

    有几种方法可以从UnitOfWork获得未提交的结果。在上面的场景中,您可以在注册新对象之前调用uow.setShouldNewObjectsBeCached(true),然后readObject调用将找到它。

    如果您刚开始使用EclipseLink/TopLink,那么我建议您使用jpaapi。您将能够在JPA上找到许多资源。一旦你开始优化你的代码或者开始处理复杂的场景,你就可以使用EclipseLink邮件列表和论坛来获得EclipseLink特定的帮助。