Hallo zusammen,
leider ist der Titel nicht ganz aussagekräftig, aber mir ist nichts besseres eingefallen ;-)
Mein Problem:
Ich habe eine List mit mehreren "java.awt.Rectangle" Klassen. Einige Rectangle sind schon in der Datenbank und haben eine ID, andere sind neu und sind noch nicht in der DB. Ich kriege die ohne Probleme in die DB, aber wie kriege ich die ID die, die neue Box in der Datenbank bekommen hat in die List zurück?
Wenn die Seite noch nicht existiert weiss ich das die Boxen alle neu sind und ich mache es so:
Das klappt auch und Texbox hat am Ende die ID.
Aber wenn die Seite und existiert, dann gibt es schon Boxen und es gibt evtl. neue.
Hier die ganze Methode:
> textbox.setBoxID(boxDB.getBOX_ID()); <----- LEIDER IST ES NOCH "0" WEIL tx.commit noch nicht ausgeführt worden ist
Wie kriege ich hier meine ID?
Vielen Dank für eure Hilfe im voraus.
leider ist der Titel nicht ganz aussagekräftig, aber mir ist nichts besseres eingefallen ;-)
Mein Problem:
Ich habe eine List mit mehreren "java.awt.Rectangle" Klassen. Einige Rectangle sind schon in der Datenbank und haben eine ID, andere sind neu und sind noch nicht in der DB. Ich kriege die ohne Probleme in die DB, aber wie kriege ich die ID die, die neue Box in der Datenbank bekommen hat in die List zurück?
Wenn die Seite noch nicht existiert weiss ich das die Boxen alle neu sind und ich mache es so:
Java:
if(boxTmp.getType().equals(InDesignComponents.TEXTBOX)) {
TextBox textbox = (TextBox) boxTmp;
Transaction tx = session.beginTransaction();
Box boxDB = new Box();
boxDB.setHeight(textbox.height);
boxDB.setWidth(textbox.width);
boxDB.setTyp(textbox.getType());
boxDB.setX(textbox.x);
boxDB.setY(textbox.y);
boxes.add(boxDB);
page.setBoxes(boxes);
project.setPage(page);
session.saveOrUpdate(project);
tx.commit();
textbox.setBoxID(boxDB.getBOX_ID());
}
Das klappt auch und Texbox hat am Ende die ID.
Aber wenn die Seite und existiert, dann gibt es schon Boxen und es gibt evtl. neue.
Hier die ganze Methode:
Java:
public ProjectsTransfer savePage(ProjectsTransfer projectTransfer) {
Session session = HibernateUtil.getSession();
Projects project = (Projects) session.get(Projects.class, projectTransfer.getId());
System.out.println("ProjectName: " + project.getName());
System.out.println("Boxes Count: " + projectTransfer.getPage().getBoxes().size());
if(project.getPage() == null) {
Page page = new Page();
page.setImagebox_count(0);
page.setTxtbox_count(projectTransfer.getPage().getTxtbox_count());
Collection<Box> boxes = new ArrayList<Box>();
for (Iterator<InDesignComponents> box = projectTransfer.getPage().getBoxes().iterator(); box.hasNext();) {
InDesignComponents boxTmp = box.next();
if(boxTmp.getType().equals(InDesignComponents.TEXTBOX)) {
TextBox textbox = (TextBox) boxTmp;
Transaction tx = session.beginTransaction();
Box boxDB = new Box();
boxDB.setHeight(textbox.height);
boxDB.setWidth(textbox.width);
boxDB.setTyp(textbox.getType());
boxDB.setX(textbox.x);
boxDB.setY(textbox.y);
boxes.add(boxDB);
page.setBoxes(boxes);
project.setPage(page);
session.saveOrUpdate(project);
tx.commit();
textbox.setBoxID(boxDB.getBOX_ID());
}
}
}
else {
Page page = project.getPage();
Collection<Box> boxes = new ArrayList<Box>();
Transaction tx = session.beginTransaction();
for (Iterator<InDesignComponents> box = projectTransfer.getPage().getBoxes().iterator(); box.hasNext();) {
InDesignComponents boxTmp = box.next();
if(boxTmp.getType().equals(InDesignComponents.TEXTBOX)) {
TextBox textbox = (TextBox) boxTmp;
if(textbox.getBoxID() > 0) {
Box boxDB = (Box) session.get(Box.class, textbox.getBoxID());
boxDB.setHeight(textbox.height);
boxDB.setWidth(textbox.width);
boxDB.setTyp(textbox.getType());
boxDB.setX(textbox.x);
boxDB.setY(textbox.y);
boxes.add(boxDB);
}
else
{
Box boxDB = new Box();
boxDB.setHeight(textbox.height);
boxDB.setWidth(textbox.width);
boxDB.setTyp(textbox.getType());
boxDB.setX(textbox.x);
boxDB.setY(textbox.y);
textbox.setBoxID(boxDB.getBOX_ID()); <----- LEIDER IST ES NOCH "0" WEIL tx.commit noch nicht ausgeführt worden ist
boxes.add(boxDB);
}
}
}
page.setBoxes(boxes);
session.saveOrUpdate(project);
tx.commit();
}
return projectTransfer;
}
> textbox.setBoxID(boxDB.getBOX_ID()); <----- LEIDER IST ES NOCH "0" WEIL tx.commit noch nicht ausgeführt worden ist
Wie kriege ich hier meine ID?
Vielen Dank für eure Hilfe im voraus.