G
Guest
Gast
Hallo zusammen,
ich habe eine Entität "AnnualStatistics" erstellt, die unter Hibernate und in der DB folgendermaßen aufgebaut ist:
Erzeugung der Tabelle in der DB:
In der Hibernate-XML-Datei:
In der Klasse die wichtigsten Stellen:
Ein Datensatz zu der Jahresstatistik existiert bereits.
Wenn ich mit der Methode loadData(int years) nun diese Statistik laden möchte, erhalte ich kein Ergebnis. Aufruf der Methode:
Ein Aufruf mit der Methode loadAllData() funktioniert jedoch. Hat jemand dafür eine Erklärung?
P.S: Die Jahresstatistik 2008 existiert ;-).
ich habe eine Entität "AnnualStatistics" erstellt, die unter Hibernate und in der DB folgendermaßen aufgebaut ist:
Erzeugung der Tabelle in der DB:
Code:
CREATE TABLE tbl_Jahresstatistik (JahresstatistikID INTEGER IDENTITY, Jahr INTEGER, Urlaubstage INTEGER, UebertragUrlaubstageAltesJahr INTEGER, Sonderurlaub INTEGER, GenommeneUrlaubstage INTEGER, Ueberstunden VARCHAR, UeberstundenAltesJahr VARCHAR);
In der Hibernate-XML-Datei:
Code:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >
<hibernate-mapping package="de.cnm.zeitstempel.common">
<class name="AnnualStatistics" table="tbl_Jahresstatistik" >
<id name="annualStatisticsID" column="JahresstatistikID">
<generator class="native"/>
</id>
<property name="year" type="int" column="Jahr"></property>
<property name="holidays" type="int" column="Urlaubstage"></property>
<property name="amountHolidaysOldYear" type="int" column="UebertragUrlaubstageAltesJahr"></property>
<property name="specialHolidays" type="int" column="Sonderurlaub"></property>
<property name="takenHolidays" type="int" column="GenommeneUrlaubstage"></property>
<property name="overtime" type="string" column="Ueberstunden"></property>
<property name="overTimeOldYear" type="string" column="UeberstundenAltesJahr"></property>
</class>
</hibernate-mapping>
In der Klasse die wichtigsten Stellen:
Code:
public class AnnualStatistics extends Observable implements IAbstractModel
{
private Integer annualStatisticsID;
private int year;
private int holidays;
private int specialHolidays;
private int takenHolidays;
private int amountHolidaysOldYear;
private String overtime;
private String overTimeOldYear;
//----Getter und Setter-----
public List loadAllData()
{
Session session = HibernateSessionFactory.currentSession();
Criteria crit = session.createCriteria(AnnualStatistics.class);
List results = crit.list();
session.flush();
HibernateSessionFactory.closeSession();
session.close();
dbclose.shutdown();
return results;
}
public List loadData(int years)
{
Session session = HibernateSessionFactory.currentSession();
Criteria crit = session.createCriteria(AnnualStatistics.class);
AnnualStatistics statistic = new AnnualStatistics();
statistic.setYear(years);
crit.add(Example.create(statistic));
List results = crit.list();
session.flush();
HibernateSessionFactory.closeSession();
session.close();
dbclose.shutdown();
return results;
}
}
Ein Datensatz zu der Jahresstatistik existiert bereits.
Wenn ich mit der Methode loadData(int years) nun diese Statistik laden möchte, erhalte ich kein Ergebnis. Aufruf der Methode:
Code:
public class Test
{
public static void main(String[] args)
{
Calculate calc = new Calculate();
AnnualStatistics statistics = new AnnualStatistics();
List list = statistics.loadData(2008);
for (int i=0; i<list.size(); i++)
{
AnnualStatistics statistic = (AnnualStatistics) list.get(i);
System.out.println(statistic.getYear());
}
}
}
Ein Aufruf mit der Methode loadAllData() funktioniert jedoch. Hat jemand dafür eine Erklärung?
P.S: Die Jahresstatistik 2008 existiert ;-).