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

ratnalein

Mitglied
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:

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:

Ähnliche Java Themen

Neue Themen


Oben