EntityManager не обновляется на flush () - PullRequest
1 голос
/ 02 июня 2010

Java EJB EntityManager не обновляет данные от потребителя.

Потребитель заходит в магазин, покупает какие-то вещи и хочет посмотреть его историю покупок. Все отображается, кроме его последней покупки. Если он выйдет и войдет, это покажет.

Я использовал JPA для сохранения покупок / покупок (привязанных к потребителю) в БД. Похоже, что покупки из этой сессии не могут быть обнаружены.

Код:

public Buys buyItem(Consumer c, int amount) {
    Buys b = new Buys();
    b.setConsumerId(c);
    b.setContent("DVD");
    b.setPrice(amount);
    em.persist(b);
    em.flush();
    return b;
}

public Collection getAllBuysFromUser(Consumer consumer) {
   Collection<Buys> collection = consumer.getBuysCollection();
   return collection;
}

Помощь !? Флеш не добивается цели ...

1 Ответ

2 голосов
/ 02 июня 2010

Вы, кажется, имеете двунаправленную связь один-ко-многим между Customer и Buys, но я не вижу, где вы добавляете экземпляр Buys к buysCollection на стороне Customer , Я ожидаю увидеть что-то вроде этого:

public Buys buyItem(Consumer c, int amount) {
    Buys b = new Buys();
    b.setConsumerId(c);
    b.setContent("DVD");
    b.setPrice(amount);
    c.getBuysCollection().add(b);
    em.persist(b);
    em.flush();
    return b;
}

И убедитесь, что вы правильно внедрили equalshashCode) .

Предлагаю проверить 1.2.6. Работающие двунаправленные ссылки (и для добавления защитных методов управления ссылками, как предлагается).

...