Ich kann ich folgende Sachlage (Receiver) verbessern?
Sprich wenn Track zu diesem Zeitpunkt einen Receiver beinhaltet der der Session nicht bekannt ist bekomme ich eine Exception, wenn ich den Receiver der Session nicht bekannt gebe. Gibt es hierfür eine bessere Lösung oder muss ich ein "saveOrUpdate" durchführen, obwohl ich eigentlich das Receiver Objekt nicht updaten möchte?
Weitere Frage betreffend Reihenfolge:
Also folgende 3 Tabellen: Receiver --> Track (FK von Receiver) --> TrackPoint (FK von Track)
Muss ich hierbei zunächst TrackPoint dann Track und zuletzt Receiver inserten?
Denn wenn ich es so mache, bekomme ich folgende Exception:
NAVTEQ.FK_TP_T_ID = in der Tabelle TrackPoint der FK zu Track
mfg
Code:
public void storeTrack(final Track track) {
Session session = HibernateUtil.getCurrentSession();
TrackDAO trackDAO = new TrackDAO();
TrackPointDAO trackPointDAO = new TrackPointDAO();
ReceiverDAO receiverDAO = new ReceiverDAO();
try {
session.beginTransaction();
trackDAO.setSession(session);
trackPointDAO.setSession(session);
receiverDAO.setSession(session);
if (!session.contains(track.getReceiver())) {
Receiver receiver = receiverDAO.getReceiver(track.getReceiver().getId());
if (receiver != null) {
receiver = receiverDAO.makePersistent(receiver);
track.setReceiver(receiver);
} else {
//FIXME welche Exception werfen!!
throw new RuntimeException ("receiver which global id: " + receiver.getGlobalID()
+ "doesnt exist");
}
}
/* save or update track */
trackDAO.makePersistent(track);
for (TrackPoint point : track.getTrackPointList()) {
point.setTrack(track);
/* save or update track point */
trackPointDAO.makePersistent(point);
}
session.getTransaction().commit();
} catch (Exception e) {
e.printStackTrace();
if (session.getTransaction() != null) {
session.getTransaction().rollback();
TrackControllerModel.LOGGER.fatal(
"class: TrackControllerModel method: storeTrack, exception occurred while"
+ " store tracks: ", e);
}
} finally {
session = null;
trackDAO = null;
trackPointDAO = null;
receiverDAO = null;
}
}
Weitere Frage betreffend Reihenfolge:
Also folgende 3 Tabellen: Receiver --> Track (FK von Receiver) --> TrackPoint (FK von Track)
Muss ich hierbei zunächst TrackPoint dann Track und zuletzt Receiver inserten?
Denn wenn ich es so mache, bekomme ich folgende Exception:
Code:
Caused by: java.sql.BatchUpdateException: ORA-02291: Integritäts-Constraint (NAVTEQ.FK_TP_T_ID) verletzt - übergeordneter Schlüssel nicht gefunden
mfg