Ano, mate pravdu. Dost presne jsem se nezamyslel nad vyznamem One-To-May pro
tento pripad.
Zaroven jsem podvedome nedoporucil pouziti Many-To-Many, ktere znamena tabulku
navic -> bylo by to pomalejsi a zabralo by to vice mista ;-)
Lukas
On Thu, 03 May 2007 11:45:02 +0200, Ondřej Fafejta wrote
> lukas napsal(a):
> > Tak to zkuste za runtime.
> > a) vlozit do listu stejny string 2x.
> >
> Myslíte něco takového?
>
> TestEntity te=new TestEntity();
> te.setId(1);
> te.setNames(new ArrayList<TestName>());
> te.getNames().add(new TestName("ahoj"));
> te.getNames().add(new TestName("ahoj"));
>
> // Ano toto je chyba.
> To samozřejmě nejde, protože při cascade ALL se vytváří druhá
> instance TestName se stejným primárním klíčem. Což je samozřejmě nesmysl.
> Navíc spojovací tabulka test_entity_name obsahuje primární klíč přes
> obě položky (test_entity_id,.test_name_name_value) Tedy není možné
> přidat 2-krát Entitu TestName s primárním klíčem "ahoj" k entitě
> TestEntity s primárním klíčem 1.
> > b) udelat dve entity a dat jim do listu stejny string.
> >
> To samozřejmě nemohu - vždyť je tam vztah OneToMany a ne ManyToMany
> :-).
>
> Pokud by tam bylo ManyToMany, tak by se muselo ukládání vyřešit
> trochu jinak.
>
> V každém případě záleží na klientovi, zda je požadováno, aby mohly
> existovat dvě entity TestName se stejným jménem.
> Pokud ano, tak by Entita TestName musela mít primární klíč např. int
> a String value by se mohlo opakovat.
>
> Fafi