Java 插入toplink后无法加载实体

Java 插入toplink后无法加载实体,java,orm,toplink,Java,Orm,Toplink,我使用toplink作为ORM工具,我面临一个特殊的问题。我正在将一个实体插入会话,然后在下一行中,如果我尝试加载同一个实体,我将无法获取该实体,相反,它将返回null。但是同样的问题,如果我尝试使用hibernate,那么它工作正常。谁能帮忙吗 Address address = new Address(); address.setAddressId("1"); address.setPincode(1); uow2.registerNewObject(address); Expression

我使用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为null。我不明白,因为我正在插入具有相同密钥的对象,然后尝试检索它。。。请帮助我…

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

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

您还可以将readObject调用更改为ReadObjectQuery,并在查询上设置ConformResultsUnitOfWork


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

您使用的是JPA还是TopLink API?你到底在比较什么?好了,TopLink的会话和Hibernate会话不是一回事吗?显示一些代码实际上可能会有所帮助。