2010-07-22 4 views
0

ORM 도구로 toplink를 사용하고 있습니다. 특이한 문제가 있습니다. 엔티티를 세션에 삽입하고 동일한 엔티티를로드하려고하면 다음 라인에서 그걸 가져올 수 없으며 대신 null을 반환합니다. 하지만 최대 절전 모드를 사용해도 동일한 문제가 발생하면 제대로 작동합니다. 아무도 도와주세요.toplink에 삽입 후 엔티티를로드 할 수 없습니다.

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로 가져옵니다. 나는 같은 키를 가진 객체를 삽입하고 그것을 검색하려고 시도하는 것으로 이해하지 못한다 ... plz help me ...

+0

JPA 또는 TopLink API를 사용하고 있습니까? 그리고 정확히 무엇이 비교되고 있습니까? AFAIK, TopLink의 Session은 Hibernate Session과 같은 것이 아닙니다. 일부 코드가 실제로 도움이 될 수 있음을 보여줍니다. –

답변

2

이것은 네이티브 TopLink/EclipseLink 코드이다. 커밋 될 때까지 쓰지 않는 UnitOfWork로만 주소를 '등록'합니다.

UnitOfWork에서 커밋되지 않은 결과를 얻는 데는 몇 가지 방법이 있습니다. 위의 시나리오에서 새 객체를 등록하기 전에 uow.setShouldNewObjectsBeCached (true)를 호출하여 readObject 호출이이를 찾을 수 있습니다.

ReadObject 호출을 ReadObjectQuery로 변경하고 쿼리에 대해 conformResultsInUnitOfWork를 설정할 수도 있습니다.

EclipseLink/TopLink를 처음 사용하는 경우 JPA API를 사용하는 것이 좋습니다. JPA에서 많은 자원을 찾을 수 있습니다. 그런 다음 코드를 최적화하거나 복잡한 시나리오를 시작하기 시작하면 EclipseLink 메일 링리스트 및 포럼을 사용하여 EclipseLink 특정 지원을 사용할 수 있습니다.

+0

고든에게 감사드립니다. 그것은 나를 위해 완벽하게 .. –

관련 문제