не может загрузить объект после вставки в toplink - PullRequest
0 голосов
/ 22 июля 2010

Я использую toplink в качестве инструмента ORM, я столкнулся с одной специфической проблемой. Я вставляю сущность в сеанс, а затем в следующую строку, если я пытаюсь загрузить ту же сущность, я не могу ее получить, вместо этого она возвращает мне ноль. Но та же проблема, если я пытаюсь использовать спящий режим, то он работает правильно. Может ли кто-нибудь, пожалуйста, помогите.

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 Ответ

2 голосов
/ 23 июля 2010

Это собственный код TopLink / EclipseLink.Вы только «регистрируете» адрес в UnitOfWork, который не записывает данные до тех пор, пока не будет зафиксирован.

Есть несколько способов получить незафиксированные результаты из UnitOfWork.В приведенном выше сценарии вы можете вызвать uow.setShouldNewObjectsBeCached (true) перед регистрацией нового объекта, после чего вызов readObject найдет его.

Вы также можете изменить вызов readObject на ReadObjectQuery и установить значение requestResultsInUnitOfWork для запроса.1005 *

Если вы только начинаете с EclipseLink / TopLink, тогда я рекомендую использовать API-интерфейсы JPA.Вы сможете найти много ресурсов на JPA.Затем, когда вы начнете оптимизировать свой код или начнете заниматься сложными сценариями, вы можете использовать списки рассылки EclipseLink и форумы, чтобы получить специальную помощь EclipseLink.

...