samedi 18 juillet 2015

Using @Stateless session bean to persist 2 entities in one to many relationship

Hello I am using 2 @Stateless session beans ClientFacade and CreditCardFacade and I would like to persist both entities using this facades and I would like also to associate Client with CreditCard.

Client is here @OneToMany (inverse side) and CreditCard is @ManyToOne (owning side)

I have written unit test:

 Client client = new Client("Credit card owner.");
    client = clientFacade.create(client);

    Calendar cal = Calendar.getInstance();
    cal.add(Calendar.YEAR, 1);

    // create instance of CreditCard
    CreditCard creditCard = new CreditCard(client, "4129239494949494", cal.getTime(), "First Last", CreditCardType.VISA );
    creditCard = cardFacade.create(creditCard);

    clientFacade.refresh(client);
    assertNotNull("Should assign new Credit Card to existing Client.", client.getCreditCards());
    assertTrue(client.getCreditCards().contains(creditCard));

    cardFacade.remove(creditCard);
    assertTrue(cardFacade.count() == 0);
    assertNull(cardFacade.find(new CreditCardId(client.getClientId(), "4129239494949494", cal.getTime())));

    clientFacade.remove(client);

But the problem here is that the client, and creditCard is persisted in DB and creditCard has set Foreign Key to client, BUT when I'm trying to access client.getCreditCards() it is null despite the fact that there is such relationship in database, and despite I have been refreshing client entity earlier. If this was made analogically in RESOURCE_LOCAL instead of JTA such approach works perfectly well.

Aucun commentaire:

Enregistrer un commentaire