JPA getSingleResult(...) wirft keine erwartete NonUnique-Exception

Dieses Thema JPA - getSingleResult(...) wirft keine erwartete NonUnique-Exception im Forum "Data Tier" wurde erstellt von ratnalein, 24. Jan. 2015.

Thema: getSingleResult(...) wirft keine erwartete NonUnique-Exception Hallo zusammen, ich habe erwartet, dass die TypedQuery-Methode getSingleResult mir eine NonUnique-Exception...

  1. Hallo zusammen,

    ich habe erwartet, dass die TypedQuery-Methode getSingleResult mir eine NonUnique-Exception wirft, wenn sie in der Datenbank mehrere zutreffende Sätze findet. Die Methode wirft aber erstaunlicherweise keinerlei Exception aus:

    Code (Java):

    @Entity
    @Table(name = "SCHUELER", catalog = "", schema = "RATNA")
    @NamedQuery(name = Schueler.NQ_FIND_BY_ID, query = "SELECT n FROM Schueler n WHERE n.Id = :Id")
    public class Schueler implements Serializable {
        private static final long serialVersionUID = -2115339582921931042L;

        /**
         * Named query für die Suche nach einem Schueler
         */

        public static final String NQ_FIND_BY_ID = "Schueler.findByID";

        @Id
        @Column(name = "ID", unique = true)
        private String Id;

        @Column(name = "NAME")
        private boolean name;

            ...
     
    Meine getSingleResult wird so aufgerufen:
    Code (Java):

     TypedQuery<Schueler> query = em.createNamedQuery("Schueler.findByID", Schueler.class);
     Schueler result = query.getSingleResult();
     
    Die Schueler-Tabelle ist so bestückt:
    Code (Text):

    ID    NAME
    ------------
    1021 Ratna
    1021 Ratna
    1021 Ratna
    1021 Ratna
    1032 Wolfgang
    1032 Wolfgang
    ...
     
    Wenn ich jetzt den TypedQuery mit dem Suchparameter "1021" ausführe, dann bekomme ich tatsächlich einen Datensatz, obwohl in der Datenbank ja eigentlich mehrere solche gleiche Sätze sich befinden. Ich hätte erwartet dass mir eine NonUnique-Exception um die Ohren fliegen würde.

    Die Spalte ID ist gewollt nicht mit dem Unique-Constraint erstellt.

    Daher meine Fragen:
    1. Funktioniert getSingleResult lediglich auf einer Unique-Spalte?
    2. Liegt es vielleicht daran, dass die Datensätze zwar mehrfach gespeichert sind, sie sind aber allesamt gleich? Daher sieht JPA dies nicht als Fehler?

    Vielen lieben Dank.

    Viele Grüße aus Rheinland,

    Eure Ratna
     
    Zuletzt von einem Moderator bearbeitet: 26. Jan. 2015
  2. Vielleicht hilft dir das Grundlagen Training weiter --> *Klick*