Witam, rozpocząłem niedawno naukę hibernete, i mam taki problem. Do celów testowych Stworzyłem klasę Chłop w której jest imię i nazwisko. Mam też dwie klasy Farmer i Rolnik dziedziczące po klasie Chlop. Farmer posiada pole "swinie" określające ilość posiadanych zwierząt , a Rolnik pole "pole" określające powierznie posiadanego pola.
oto kod :
public class Chlop {
protected String imie,nazwisko;
private long id;
public long getId() {
return id;
}
private void setId(long id) {
this.id = id;
}
public String getImie() {
return imie;
}
public void setImie(String imie) {
this.imie = imie;
}
public String getNazwisko() {
return nazwisko;
}
public void setNazwisko(String nazwisko) {
this.nazwisko = nazwisko;
}
}
public class Farmer extends Chlop{
int swinie;
public int getSwinie() {
return swinie;
}
public void setSwinie(int swinie) {
this.swinie = swinie;
}
}
public class Rolnik extends Chlop{
private int pole;
public int getPole() {
return pole;
}
public void setPole(int pole) {
this.pole = pole;
}
}
Chlop.hbm.xml
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- Generated 2013-05-28 05:32:57 by Hibernate Tools 3.4.0.CR1 -->
<hibernate-mapping>
<class name="nowe.Chlop" table="CHLOP">
<id name="id" type="long">
<column name="ID" />
<generator class="native" />
</id>
<property name="imie" type="java.lang.String">
<column name="IMIE" />
</property>
<property name="nazwisko" type="java.lang.String">
<column name="NAZWISKO" />
</property>
<joined-subclass name="nowe.Farmer" extends="nowe.Chlop" table="FARMER" lazy="false" >
<key>
<column name="ID" />
</key>
<property name="swinie" type="int">
<column name="SWINIE" />
</property>
</joined-subclass>
<joined-subclass name="nowe.Rolnik" extends="nowe.Chlop" table="ROLNIK" lazy="false">
<key>
<column name="ID" />
</key>
<property name="pole" type="int">
<column name="POLE" />
</property>
</joined-subclass>
</class>
</hibernate-mapping>
Klasa startowa tworząca obiekty i umieszczająca je w bazie danych:
import nowe.Chlop;
import nowe.Farmer;
import nowe.Rolnik;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
public class Start {
public static void main(String[] agrs){
Session session =null;
Transaction tr=null;
SessionFactory sf=new Configuration().configure().buildSessionFactory();
session=sf.openSession();
tr=session.beginTransaction();
Chlop ch=new Chlop();
ch.setImie("jar");
ch.setNazwisko("nie");
session.save(ch);
Farmer fa=new Farmer();
fa.setImie("jarfa");
fa.setNazwisko("niefa");
fa.setSwinie(2);
session.save(fa);
Rolnik ro=new Rolnik();
ro.setImie("jarro");
ro.setNazwisko("niero");
ro.setPole(5);
session.save(ro);
tr.commit();
session.flush();
session.close();
}
}
Dodanie do bazy przechodzi bez problemu.
Moje kłopoty zaczęły się kiedy chciałem, np. z Chłopa zrobić rolnika, czyli dodać mu 5 ha ziemie.
Oto moje pytania:
- Jak zrobić z chłopa rolnika lub farmera.
- jak z farmera zrobić rolnika
- jak z farema zrobić zwykłego chłopa
Będę wdzięczny za każdą pomoc