Hi,
takze dekompozice tercialni vztahu na entity pres pomocnou entitu co ma
dve vlastnosti.
trida Dum (tabulka t_house)
{ ListHodnotaVlastnostiDomu vlastnostiDomu }
trida TypVlastnostiDomu { nazev=Bool } { nazev=Text }, ...
trida VlastnostDomu { nazev text, TypVlastnostiDomu typ }
trida HodnotaVlastnostiDomu { VlastnostDomu, Dum }
Dum-1:n-HodnotaVlastnostiDomu-m:1-VlastnostDomu-k:1-TypVlastnostiDomu
http://www.hibernate.org/hib_docs/v3/reference/en/html/collections.html#collections-ternary
nebo pomoci komponent - ty maji jeden problem - nesdili se.
Takze objekt HodnotaVlastnostiDomu h1,h2 po nacteni z DB nebude platit
h1.getVlastnostDomu()==h2.getVlastnostDomu() (nutno implementovat
vlastni equals a vzdycky budete porovnavat nazev a typ)
http://www.hibernate.org/hib_docs/v3/reference/en/html/components.html
TypVlastnostiDomu je vlastne vyctovy typ.
A ted je tu takovej problem s OOP - nahrava to tomu, aby trida
VlastnostDomu byla abstraktni, protoze TypVlastnostiDomu je omezeny, tj.
BoolVlastnostDomu extends VlastnostDomu { } - bude reprezentovany
checkboxem TextVlastnostDomu bude polem
to zaridi:
interface VlastnostDomuPrinter {
print(BoolVlastnostDomu);
print(TextVlastnostDomu) ...
}
class HTMLPrinter implements VlastnostDomuPrinter {
print(BoolVlastnostDomu) { ... }
... }
aby jsme mohli udelat for(VlastnostDomu vlastnostDomu :
dum.getVlastnostiDomu()) { printer.print(vlastnostDomu) }
A pokud chcete pouzivat napr. JSTL - no neni to fanda OOP, takze je
dobre namapovat discriminator na vlastnost (update=false, insert=false).
Tak asi tak.
Karel