vobord1 napsal(a):
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
Mapování ManyToOne vytvoří cizí klíč. Pokud přidáte JoinColumn, tak
můžete pojmenovat i sloupeček v DB.
např.
@Table(name="ciselnik_test")
@Entity()
public class Ciselnik implements Serializable{
@Id()
private Integer id;
// ...
}
@Table(name="osoba_test")
@Entity()
public class Osoba implements Serializable{
@Id()
private Integer id;
@ManyToOne()
@JoinColumn(name="ciselnik_id")
private Ciselnik ciselnik;
// ...
}
Tabulka osoba_test bude vypadat takto - (výpis z postgresql):
Tabulka "public.osoba_test"
Sloupec | Typ | Modifikátory
-------------+---------+--------------
id | integer | not null
ciselnik_id | integer |
Indexy:
"osoba_test_pkey" PRIMARY KEY, btree (id)
Podmínky cizího klíče:
"osoba_test_ciselnik_id_fkey" FOREIGN KEY (ciselnik_id) REFERENCES
ciselnik_test(id)
Je tedy možné napsat entity tak, aby odpovídaly již existujícímu
schématu v DB!
Doporučuji přečíst část EJB-persistence specifikace - Relationship
mapping od kapitoly 2.1.8 (od str. 25)
http://jcp.org/aboutJava/communityprocess/final/jsr220/index.html
nebo toto
http://java.boot.by/scbcd5-guide/ch05s04.html
Fafi