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:
Meine getSingleResult wird so aufgerufen:
Die Schueler-Tabelle ist so bestückt:
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
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:
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:
Java:
TypedQuery<Schueler> query = em.createNamedQuery("Schueler.findByID", Schueler.class);
Schueler result = query.getSingleResult();
Die Schueler-Tabelle ist so bestückt:
Code:
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 bearbeitet von einem Moderator: