Hallo Forum
Kleine Verständnisfrage zu Hibernate.
Ich nutze Hibernate mit einer MySql DB (v5) dahinter.
Ich habe zwei Tabellen:
- timereports
invoiceId (fk)
- invoice
Relationship N:0
d.h. Ein timereport hat kann eine Relation zu einer Invoice haben, Eine Invoice kann eine Relation zu mehreren timereports haben.
Use Case:
Es liegen mehrere timereports in der DB welche verrechnet werden müssen.
Ich erstelle eine neue Rechnung und weise dieser die zu verrechnenden Timereports zu. Nun habe ich genau damit meine Probleme.
z.B. dieser Code funktioniert nicht:
oder dieser Code funktioniert auch nicht:
Die Relation zu den Timereports wird nicht gespeichert. Ich kann mich wohl anschliessend durch die Timerports loopen und die Relation zu der Invoice setzen und jeden einzeln abspeichern. Nur finde ich das irgendwie umständlich.
Kennt jemand den Grund wieso das nicht funktioniert?
Vielen Dank für einen Tipp.
Grüsse
Alan
Kleine Verständnisfrage zu Hibernate.
Ich nutze Hibernate mit einer MySql DB (v5) dahinter.
Ich habe zwei Tabellen:
- timereports
invoiceId (fk)
- invoice
Relationship N:0
d.h. Ein timereport hat kann eine Relation zu einer Invoice haben, Eine Invoice kann eine Relation zu mehreren timereports haben.
Use Case:
Es liegen mehrere timereports in der DB welche verrechnet werden müssen.
Ich erstelle eine neue Rechnung und weise dieser die zu verrechnenden Timereports zu. Nun habe ich genau damit meine Probleme.
z.B. dieser Code funktioniert nicht:
Code:
// Hier werden die timereports selektiert...
ArrayList<Timereports> reports = new TimerepDao().getListToInvoiceReports(customer.getCompanyId(), projectsTrgtPickList, usersTrgtPickList,monthToInvoiceResult);
Set<Timereports> reportSet = new HashSet<Timereports>();
for (Timereports report : reports){
reportSet.add(report);
}
invoiceRecord.setInvoiceCreated(new Date());
invoiceRecord.setUsers(user);
invoiceRecord.setCompany(customer);
int invoiceId = dao.add(invoiceRecord);
dao.commit();
invoiceRecord.setInvoiceId(invoiceId);
invoiceRecord.setTimereportses(reportSet);
// update führt effektiv einen merge aus
dao.update(invoiceRecord);
dao.commit();
oder dieser Code funktioniert auch nicht:
Code:
// Hier werden die timereports selektiert...
ArrayList<Timereports> reports = new TimerepDao().getListToInvoiceReports(customer.getCompanyId(), projectsTrgtPickList, usersTrgtPickList,monthToInvoiceResult);
Set<Timereports> reportSet = new HashSet<Timereports>();
for (Timereports report : reports){
reportSet.add(report);
}
invoiceRecord.setInvoiceCreated(new Date());
invoiceRecord.setUsers(user);
invoiceRecord.setCompany(customer);
invoiceRecord.setTimereportses(reportSet);
int invoiceId = dao.add(invoiceRecord);
dao.commit();
Die Relation zu den Timereports wird nicht gespeichert. Ich kann mich wohl anschliessend durch die Timerports loopen und die Relation zu der Invoice setzen und jeden einzeln abspeichern. Nur finde ich das irgendwie umständlich.
Kennt jemand den Grund wieso das nicht funktioniert?
Vielen Dank für einen Tipp.
Grüsse
Alan
Zuletzt bearbeitet: