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>