отображать содержимое сущности (таблицы) - PullRequest
0 голосов
/ 19 июня 2011

У меня есть две сущности

   @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;

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

<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, но это не помогло

спасибо за помощь

Ответы [ 2 ]

0 голосов
/ 10 июля 2011

Вам не нужно вручную обновлять сущность в Табульке, добавьте другой метод:

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);
    }
}

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

0 голосов
/ 20 июня 2011

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

...