[Erledigt] Hibernate Verständnis Fragen/Probleme

die Methoden in der SQL Klasse sehen jetzt so aus

  public Label createLabel(String name)
  {
    Label l = null;
    try
    {
      l = (Label)entitymanager.createNamedQuery(Label.SQL_NAME).setParameter("name", name).getSingleResult();
    }
    catch(NoResultException ex)
    {
      // ex.printStackTrace();
    }
    if(l != null)
      return l;
    l = labelhash.get(name);
    if(l != null)
      return l;
    labelhash.put(name, l = new Label(name));
    return l;
  }```

Weil mir eingefallen ist, will ich mehrere Alben gleichzeitig will er Artist & Co. ja auch mehrfach eintragen was er nicht darf.

Aber gestern hatten wir ja auch das ich einzelne Elemente nicht eintragen konnte, was durch diese Änderung ja nicht betroffen ist. Trotzdem läuft das alles jetzt.

Naja, ist ja opti, wenns jetzt geht! :slight_smile:

jep nur hätte ich gern noch ne Erklärung warum es jetzt geht bzw warum es vorher nicht ging :smiley:

ACK :smiley:

und wayne solange alles jetzt funktioniert.

Evtl. würds ne Erklärung geben, wenn du nochmal verständlicher ausdrücken würdest, WAS du so alles gemacht hast, dass es geht bzw. was vorher nicht war, damit es nicht gegangen ist. Weil ich (und da bin ich scheinbar nicht allein :wink: ) kann dir überhaupt gar nicht folgen.

Wir(Null+mich) haben uns darauf geeinigt das Hibernate wohl mehr mitbekommt als ich gedacht hab.

Als Info für die anderen, in meinem Programm gibts eine Suche, mit der sucht man Alben bei Amazon. Jedes Album das gefunden wird wird als Albumobjekt erzeugt und angezeigt (nicht in der Datenbank gespeichert).
Die Erzeugung der Objekte scheint das Problem gewesen zu sein.
1.Version egal was für Artist, Label … es waren es wurde immer ein neues Objekt mit new erzeugt

  • Das war defintiv falsch weil Hibernate die Objekte nicht richtig einfügen konnte da ich ihm entgegen meiner ersten Annahmen nicht sagen kann das er die Elemente anhand des Namens identifizieren soll
    2.Version bei der Suche wird in der Datenbank nachgesehen ob das schon vorhanden ist oder nicht wenn nicht wird wieder mit new ein neues Objekt erzeugt
  • mir ist aufgefallen das wenn ich 10 Alben gleichzeitig einfügen will ich 10 unterschiedliche Artist Objekte mit gleichem Namen haben kann
  1. Version jetzt wird jedes Objekt was nicht in der Datenbank ist wird wieder mit new erzeugt, aber in einer Hashtable abgelegt so das es beim nächsten Mal von dort geholt werden kann

Version 3 funktioniert (derzeit) ohne Probleme.

Hat jemand eine Erklärung warum die 2. nicht funktioniert? Auch wenn ich 10 Alben gesucht hab, aber nur 1 Album einfüge.