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