2011-06-19 3 views
0

У меня есть два объектадисплей содержание объекта (таблица)

@Entity  
    public class Tabulka{ 

@OneToMany(mappedBy = "tabulka") 
    private List<VysledkyHraca> vysledkyHraca; 
. 
. 
. 

} 

и

@Entity 
    public class VysledkyHraca{ 

    @ManyToOne 
     private Tabulka tabulka; 
. 
. 
. 

    } 

Теперь я создаю новый экземпляр VysledkyHraca и сохранить его в базе данных:

em.merge(vysledkyHraca); 

где em - EntityManager em;

, но когда я хочу написать Tabulka элементы

<h:dataTable value="#{item.vysledkyHraca}" var="item1" > 
        <h:column> 
         <f:facet name="header"> 
          <h:outputText value="hrac"/> 
         </f:facet> 
         <h:outputText value="#{item1.hrac}"/> 
        </h:column> 
       </h:dataTable> 

Я не вижу в этой таблице нового пункта. Мне нужно снова создать и запустить эту заявку, чтобы увидеть этот новый элемент. Что мне нужно сделать, если я хочу немедленно увидеть этот новый предмет?

Я пытаюсь вызвать em.flush или em.refresh, но оно не поможет

ТНХ помощи

+0

Является ли ваша проблема на странице JSF или в бэкбоне? Поместите точку останова и посмотрите, не находятся ли в бэкэнде данные, отличные от внешнего интерфейса. – Dejell

+0

Я использую System.out.println() для записи результата namedquery, и вот проблема, что запись не является актуальной – hudi

ответ

0

Вам не нужно вручную обновлять объект в Tabulka добавить еще METHODE:

public void addVysledkyHraca(VysledkyHraca v){ 
    this.vysledkyHraca.add(v); 
    if(v.getTabulka()!=this) 
     v.setTabulka(this); 

} 

в VysledkyHraca:

public void setTabulka(Tabulka t) { 
    this.tabulka = t; 
    if (!t.getVysledkyHraca().contains(this)) { 
     t.getVysledkyHraca().add(this); 
    } 
} 

, когда вы обновляете tabulka просто позвонить addVysledkyHraca добавить новый VysledkyHraca к списку.

0

Поскольку вы не обновляя существующие данные, которые нужно использовать em.persist (newIstance); Если вы хотите увидеть немедленные изменения, вам нужно добавить некоторые возможности ajax в приложение, чтобы я рекомендовал вам Icefaces или Richfaces.

+0

да Я используя em.persist, и я вижу в базе данных, что была создана новая запись. Я думаю, что проблема может быть в именованном запросе. Когда он сначала называется этим именованным, он отображает правильный результат, но когда он вызывается во-вторых, в-третьих ... он не отображает обновленную запись, когда я использую join в именованном запросе. Моим временным решением является то, что вручную обновляю этот объект (когда id равен, я добавляю vysledky hraca в tabulka), и он работает, но я не думаю, что это правильное решение. – hudi

+0

или проблема в менеджере сущностей. Я использую это: @PersistenceContext EntityManager em; – hudi

Смежные вопросы