Hi,

takze dekompozice tercialni vztahu na entity pres pomocnou entitu co ma
dve vlastnosti.

trida Dum (tabulka t_house) 
{ List<HodnotaVlastnostiDomu> 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




Odpovedet emailem