2010-07-22 7 views
0

J'utilise toplink comme outil ORM, je fais face à un problème particulier. J'insère une entité dans la session et ensuite dans la ligne suivante si j'essaie de charger la même entité, je suis incapable de l'obtenir, à la place, elle me renvoie null. Mais le même problème si j'essaie d'utiliser Hibernate, alors cela fonctionne correctement. quelqu'un peut-il aider s'il vous plait.impossible de charger l'entité après l'insertion dans 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); 

à la fin je reçois adresse1 comme nulle. Je ne comprends pas comme j'insère l'objet avec la même clé et puis essaye de le récupérer ... plz m'aide ...

+0

Utilisez-vous l'API JPA ou TopLink? Et qu'est-ce qui compare exactement? AFAIK, la session de TopLink n'est pas la même chose que la session d'Hibernate? Montrer du code pourrait aider réellement. –

Répondre

2

Ceci est le code natif TopLink/EclipseLink. Vous enregistrez seulement l'adresse avec l'UnitOfWork qui n'écrit pas jusqu'à commit.

Il existe plusieurs façons d'obtenir des résultats non validés d'un UnitOfWork. Dans le scénario ci-dessus, vous pouvez appeler uow.setShouldNewObjectsBeCached (true) avant d'enregistrer le nouvel objet, puis l'appel readObject le trouvera.

Vous pouvez également remplacer l'appel readObject par ReadObjectQuery et définir conformResultsInUnitOfWork dans la requête.

Si vous débutez avec EclipseLink/TopLink, je recommande d'utiliser les API JPA. Vous serez en mesure de trouver de nombreuses ressources sur JPA. Ensuite, une fois que vous commencez à optimiser votre code ou à commencer à vous attaquer à des scénarios compliqués, vous pouvez utiliser les listes de diffusion et les forums EclipseLink pour obtenir une assistance spécifique EclipseLink.

+0

merci Gordon .. cela a fonctionné pour moi parfaitement .. –