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

Odpovedet emailem