zdravim konferenciu,

neviem ci je to tym ze som sa to snazil rozchodit celu noc, ale nevie nahodou niekto ako toto presne popisat v triedach a anotaciach, cital som podobny problem co riesil Maaartin http://forum.fotografovani.cz/read.php?14,2167592,2209867,quote=1 ale ani to velmi nepomohlo. snazim sa to riesit pomocou "map-key-many-to-many". pan Tejnora napisal nasledovne riesenie tohoto problemu: mam tabulku zakladnych vlastnosti napr. domu t_house, kde mam id, nazov domu, ulicu, .... chcem vytvorit dalsiu tabulku kde chcem definovat ciselnik "dodatocnych" vlastnosti domu, napr. t_property_house, kde mam id, nazov a typ vlastnosti (int, dec, bool, date, ....) napr.
id      nazov                        typ
1      "pocet izieb"               int
2      "vlastne kurenie"         bool
a poslednu tabulku,kde chcem zapisovat konkretne jednotlive dodatocne vlastnosti definovanych domov (domov ktore boli definovane v tabulke t_house), napr. t_property_house_value, kde bude id vlastnosti (cudzi kluc do t_property_house), id domu (cudzi kluc do t_house) a stlpce pre jednotlive mozne typy, teda stlpec value_integer typu int, value_dec typu float, value_bool typu boolean, atd.).

riesenie:

Karel Tejnora  wrote / napísal(a):
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






__________ Informacia od NOD32 2549 (20070925) __________

Tato sprava bola preverena antivirusovym systemom NOD32.
http://www.eset.sk




dakujem

Ivan

Odpovedet emailem