Vim ze to neni v DB objektove spravne, db jsem nenavrhoval, bohuzel stim nic 
neudelam a musim pracovat stim co mi daji. - zkusim jim ale domluvit :)

Integer nebo Long by nejspise stacil .... ma to nejaky znatelny vliv na 
aplikaci?

V DB by se měl vygenerovat i cizí klíč.

mapovani v jave se nepromitne do db, takze cizi klic v DB nebude

nyni mam namapovany @Column private Integer idCiselnik; a veskere vazby musim 
hledat.
Mapovani s @ManyToOne fungovalo castecne, jen nevim proc mi po ulozeni vracely 
objekty null

diky za reakce

> 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