Ahoj,

tapu v tom, jak funguje tranzitivni perzistence v Hibernate.

Mam tridu Lecba, ktera obsahuje Set instanci LecbaLekem. Jedna se o typickej Parent/Child vztah. Problem je v tom, ze instance LecbaLekem odkazovane z instance Lecba se nechteji ulozit do DB.

Pokud udelam

Lecba p = new Lecba()
LecbaLekem c = new LecbaLekem()
p.addLecbaLekem(c)

session.saveorUpdate(p)
session.flush()
session.close()

tak  se ulozi do DB jen instance Lecba

Pokud ovsem nejdriv ulozim lecbu a pak pridam lecbu lekem, ulozi se i lecba lekem:

Lecba p = new Lecba()
LecbaLekem c = new LecbaLekem()

session.saveOrUpdate(p)
session.flush()

p.addLecbaLekem(c)

session.saveOrUpdate(p)
session.flush()
session.close()

Ocekaval bych, ze bude fungovat i ten kod z prvni ukazky, vzhledem k tomu, ze u mapovani mnoziny lecba lekem je cascade="all". Docela by se mi hodilo uplacat si graf instanci v pameti a pak ho cely ulozit do DB. A nevim, proc se mi to nedari.

Diky za kazdy nakopnuti

kolisko

konfigurace

Hibernate 3.2

DB schema:

CREATE table Lecba (
   LecbaId integer generated by default as identity (start with 1),
   Poznamka varchar(1024),
primary key (LecbaId)
)

CREATE table LecbaLeky (
   LecbaLekyId integer generated by default as identity (start with 1),
   LecbaId integer NOT NULL ,
   Mnozstvi numeric,
primary key (LecbaLekyId)
)

alter table ML2.LecbaLeky add foreign key (LecbaId) references ML2.Lecba (LecbaId)

-------------------------------------------------------
Hibernate mapovani LecbaLekem

<hibernate-mapping>
<class name="cz.euromise.adamekJ.model.LecbaLeky" table="LECBALEKY" schema="ML2">
   <id name="id" column="lecbalekyid"> <generator class="native"/> </id>

<many-to-one name="lecba" class="cz.euromise.adamekJ.model.Lecba" fetch="select">
           <column name="LECBAID" not-null="true" />
       </many-to-one>
   </class>
</hibernate-mapping>

-------------------------------------------------------
Hibernate mapovani Lecba

<hibernate-mapping>
<class name="cz.euromise.adamekJ.model.Lecba" table="LECBA" schema="ML2"> <id name="id" column="lecbaid"> <generator class="native"/> </id> <set name="leky" inverse="true" cascade="all">
           <key column="LECBAID" />
           <one-to-many class="cz.euromise.adamekJ.model.LecbaLeky"/>
       </set>
   </class>
</hibernate-mapping>

Odpovedet emailem