vobord1 napsal(a):
Zdravim,

pouzivam jsf, ejb.
v databazi mam tabulky "ciselnik" a "osoba", nejsou propojene cizim klicem, ale 
tabulka osoba ma sloupec s id ciselniku

je mozne namapovat entitu osoba ktera bude mit misto
  @Column(...)
   private BigDecimal idCiselnik;
Toto není objektově správně. Takto by se němělo používat mapování vztahů.

mimochodem, proč má číselník primární klíč BigDecimal?
- nestačilo by třeba Long nebo int?

namapovanou primo entitu ciselniku - stejne jakoby tam vazba s FK byla?
    @JoinColumn(...)
    @ManyToOne
   private Ciselnik ciselnik;
Tento postup je správný. V DB by se měl vygenerovat i cizí klíč.

pri pouziti jednoduche aplikace bez podpory ejb jsem vytvoril Converter pro 
entitu Ciselnik a vse fungovalo, EntityManager bez problemu data ulozi.
Nyni jsem ale pridal EJB modul. Data se zobrazuji bez problemu az do momentu 
kdy ulozim novou osobu. Pri ukladani objektu osoba s nastavenym ciselnikem se 
mi sice data spravne ulozi do db ale od tohoto momentu mi pri nacteni vraci 
null v promenne ciselnik - nejen u prave ulozene osoby ale u vsech nactenych 
osob ktere maji stejne id ciselniku - pri novem deployi aplikace se vse zobrazi 
normalne - dokud opet neco neulozim.

Pokud se data uloží do DB v pořádku, tak by mohl být problém s konvertorem.

Třída CiselnikConverter v JSF by mohla vypadat třeba takto

public class CiselnikConverter implements Converter{
public Object getAsObject(FacesContext <http://java.sun.com/javaee/javaserverfaces/1.2/docs/api/javax/faces/context/FacesContext.html> context, UIComponent <http://java.sun.com/javaee/javaserverfaces/1.2/docs/api/javax/faces/component/UIComponent.html> component, java.lang.String value){
         int ciselnikId=Integer.parseInt(value);

         CiselnikDAO ciselnikDAO= ... // DAO pro spravu ciselniku
return ciselnikDAO.findCiselnikById(ciselnikId); // nacte ciselnik dle id z DB
      }

public String *getAsString*(FacesContext <http://java.sun.com/javaee/javaserverfaces/1.2/docs/api/javax/faces/context/FacesContext.html> context,UIComponent <http://java.sun.com/javaee/javaserverfaces/1.2/docs/api/javax/faces/component/UIComponent.html> component, java.lang.Object value){
         Ciselnik c=(Ciselnik) value;
         return Integer.toString(c.getId());
     }
}

Muze za to proxy pres kterou objekt posilam do ejb modulu a converter uz 
nefunguje?
Nevím. S proxy nemám zkušenost.
dik za odpovedi
dave
Fafi

Odpovedet emailem