Hi all,
Neviem ako napisat metodu, kt. mi pre danu citacku kariet vrati karty:
public class Karta {
private Long id;
private String kod;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getKod() {
return kod;
}
public void setKod(String kod) {
this.kod = kod;
}
@Override
public String toString() {
return "Karta [id: " + id + ", kod: " + kod + "]";
}
}
public class Citacka {
private Long id;
private String kod;
private Set<Karta> karty;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getKod() {
return kod;
}
public void setKod(String kod) {
this.kod = kod;
}
public Set<Karta> getKarty() {
return karty;
}
public void setKarty(Set<Karta> karty) {
this.karty = karty;
}
@Override
public String toString() {
return "Citacka [id: " + id + ", kod: " + kod + "]";
}
}
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="sk.gamo.ins.dto">
<class name="Karta" table="KARTA">
<id name="id" column="KAR_ID" type="java.lang.Long">
<generator class="sequence">
<param name="sequence">SEQ_KARTA</param>
</generator>
</id>
<property name="kod" column="KAR_KOD" not-null="true" />
</class>
</hibernate-mapping>
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="sk.gamo.ins.dto">
<class name="Citacka" table="CITACKA">
<id name="id" column="CIT_ID" type="java.lang.Long">
<generator class="sequence">
<param name="sequence">SEQ_CITACKA</param>
</generator>
</id>
<property name="kod" column="CIT_KOD" not-null="true" />
<set name="karty" table="C_K" cascade="save-update" lazy=
"true">
<key column="CK_CITACKA" />
<many-to-many column="CK_KARTA" class="Karta" />
</set>
</class>
</hibernate-mapping>
No a teraz sa snazim nacitat karty pre citacku s id = 1:
public Set<Karta> getKartyForCitacka() {
Session session = hibernateTemplate
.getSessionFactory().openSession();
try {
Citacka citacka = (Citacka) session.load(Citacka.class,
new Long(1));
return citacka.getKarty();
} catch (Exception e) {
e.printStackTrace();
} finally {
session.close();
}
}
Stale mi to vsak pada na tuto vynimku:
org.hibernate.LazyInitializationException: failed to lazily initialize a
collection of role: Citacka.karty, no session or session was closed
Ak vsak dam lazy="false", tak mi to funguje, ale citat pre kazdu citacku
1000ky kariet, ked ju loadnem je pekne o nicom :(((
Michal