Hallo Leute.
Ich habe Folgendes Konstrukt:
Ein Auftrag kann einen oder mehrere Status haben.
Ein Status kann zu einem oder mehreren Aufträgen gehören
Das Datenbankdesign und die Klassen habe ich folgendermaßen erstellt:
Auftrag: ID, Bezeichnung
Status: ID,Bezeichnung
Auftragstatus: AuftragID, StatusID, erfasstAm
Das schreiben der Daten funktioniert auch wunderbar.
Mein Problem ist nun, dass wenn ich einen Auftrag löschen will, ich zuerst manuell die Auftragstati löschen muss.
Das klappt ebenfalls.
Es ist meines erachtens aber umständlich.
Gibt es eine Möglichkeit das zu automatisieren?
Hier noch meine Javaklassen.
Status: (Auftrag ist ähnlich aufgebaut)
AuftragStatus:
Hoffe das Problem ist verständlich und ihr könnt mir helfen![Smile :) :)](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
Danke schonmal im vorraus.
Ich habe Folgendes Konstrukt:
Ein Auftrag kann einen oder mehrere Status haben.
Ein Status kann zu einem oder mehreren Aufträgen gehören
Das Datenbankdesign und die Klassen habe ich folgendermaßen erstellt:
Auftrag: ID, Bezeichnung
Status: ID,Bezeichnung
Auftragstatus: AuftragID, StatusID, erfasstAm
Das schreiben der Daten funktioniert auch wunderbar.
Mein Problem ist nun, dass wenn ich einen Auftrag löschen will, ich zuerst manuell die Auftragstati löschen muss.
Java:
...
Criteria crit = session.createCriteria(AuftragStatus.class).add(Property.forName("myAuftrag").eq(auftrag));
List<?> domainListe = crit.list();
for (int count=0; count < domainListe.size(); count++) {
AuftragStatus aufstat = (AuftragStatus) domainListe.get(count);
try {
session.delete(filstat);
}
catch (Exception e) {
System.out.printf(e.getMessage());
}
}
...
Es ist meines erachtens aber umständlich.
Gibt es eine Möglichkeit das zu automatisieren?
Hier noch meine Javaklassen.
Status: (Auftrag ist ähnlich aufgebaut)
Java:
@Entity
@Table(name="STATUS")
public class Status {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "STATUSID")
private Integer statusID;
@ManyToOne(fetch=FetchType.EAGER,cascade = CascadeType.PERSIST)
@JoinColumn(name = "OBERSTATUSID", insertable=true, updatable=true)
private Status myStatus;
@Column(name="BEZEICHNUNG")
private String Bezeichnung;
public Status() {
}
public Integer getStatusID() {
return this.statusID;
}
public void setStatusID(Integer statusID) {
this.statusID = statusID;
}
public Status getMyStatus() {
return myStatus;
}
public void setMyStatus(Status myStatus) {
this.myStatus = myStatus;
}
public String getBezeichnung() {
return this.Bezeichnung;
}
public void setBezeichnung(String bezeichnung) {
this.Bezeichnung = bezeichnung;
}
@Override
public String toString()
{
return this.getBezeichnung();
}
}
AuftragStatus:
Java:
@Entity
@Table(name="AUFTRAGSTATUS")
public class AuftragStatus implements Serializable {
@Id
@ManyToOne(fetch=FetchType.EAGER,cascade = CascadeType.PERSIST)
@JoinColumn(name = "STATUSID", insertable=true, updatable=true)
private Status myStatus;
@Id
@ManyToOne(fetch=FetchType.EAGER,cascade = CascadeType.ALL)
@JoinColumn(name = "AUFTRAGID", insertable=true, updatable=true)
private Filiale myAuftrag;
@Column(name = "ERFASSTAM")
private Date erfasstam;
public FilialStatus() {
public Date getErfasstam() {
return erfasstam;
}
public void setErfasstam(Date erfasstam) {
this.erfasstam = erfasstam;
}
public Unterstatus getStatus() {
return myStatus;
}
public void setMyStatus(Status myStatus) {
this.myStatus = myStatus;
}
public Filiale getMyAuftrag() {
return myAuftrag;
}
public void setMyAuftrag(Auftrag myAuftrag) {
this.myAuftrag = myAuftrag;
}
}
Hoffe das Problem ist verständlich und ihr könnt mir helfen
Danke schonmal im vorraus.