True findByActiveTrue() … where x.active = true
False findByActiveFalse() … where x.active = false
Meine Vermutung wäre zu verwenden
@Query
public Iterable<Entity> findByEnabledTrue();
Danke, @orangegoat, aber bist du sicher, dass es funktioniert? Wurde es in einer späteren Spring Data-Version eingeführt? Ich verwende 1.0.1 und erhalte eine Ausnahme: Fehler beim Erstellen einer Bean mit dem Namen „entityRepository“: FactoryBean hat eine Ausnahme bei der Objekterstellung ausgelöst; Die verschachtelte Ausnahme ist java.lang.IllegalArgumentException: Keine Eigenschaft true für den Typ boolean gefunden
– Mike Minicki
11. Juli 2013 um 22:56 Uhr
Nun, es wurde in Version 1.1.0.RC1 (2012-02-03) eingeführt: “Unterstützung für Wahr/Falsch als Suchschlüsselwörter (DATAJPA-132)”. Als akzeptiert markieren, obwohl ich nicht testen kann, ob es funktioniert.
– Mike Minicki
11. Juli 2013 um 23:21 Uhr
Ich denke, das funktioniert, wenn Sie es in der Datenbank als wahr/falsch speichern. Wenn Sie es als ‘Y’/’N’ speichern, erzeugt dieses Ergebnis, wo x = 1, und schlägt fehl, wenn String mit Int verglichen wird. Ich musste es so verwenden: findByX (boolean enabled), um die richtige Abfrage zu erhalten. Ich bin mir nicht sicher, warum die Übersetzung im ersten Fall nicht wie erwartet erfolgt.
– Wadim Kiriltschuk
18. September 2019 um 1:39 Uhr
megalucio
Das @Query Anmerkungen können sogar übersprungen werden. Also sollte es einfach so funktionieren:
public Iterable<Entity> findByEnabledTrue();
@Abfrage überspringen? Nicht wirklich, was ist mit dem Abrufen nur bestimmter Felder? Mit Ihrem Code rufen Sie alle Felder der Entität aus der Datenbank ab, was möglicherweise nicht das ist, was Sie wollen. Trotzdem füge ich eine weitere Version Ihrer Methode hinzu: public Iterable findByEnabledIsTrue(); beachten Sie das Is oder public Iterable findByEnabled(boolean done); dann übergeben Sie einen booleschen Wert als Argument
– Melardew
17. Juni 2019 um 15:28 Uhr
Sie können die @Query-Annotation in der Tat überspringen, da Spring dies nur per Konvention auf der Grundlage des Namens der Methode ableiten wird. Wenn Sie jedoch nur bestimmte Felder möchten, müssen Sie wahrscheinlich eine Abfrage erstellen, aber ich sehe nicht, was das ist Mehrwert davon, und dann ab Ihrer Methode findByEnabled, dass dies wiederum nicht der Sinn dieser Frage ist, wie im Titel dieser Frage klar angegeben ist: “Abfrage von booleschen Eigenschaften in spring-data-jpa ohne Verwendung von Methodenparametern”.
– megalucio
17. Juni 2019 um 17:19 Uhr
Ja, ich weiß, dass er nach einer Lösung gefragt hat, ohne @Query zu verwenden, aber Sie sagten über das Überspringen der Query-Anmerkung. Ich wollte nur sicherstellen, dass die Leute, die Ihre Antworten lesen, die Konsequenzen davon bemerken. Abfragemethoden können gefährlich sein, wenn Sie eine Entität mit vielen haben Felder oder/und Felder, die viel Speicher beanspruchen (z. B. große Zeichenfolgen). Also nein, man kann nicht einfach so überspringen
– Melardew
17. Juni 2019 um 17:42 Uhr
11752300cookie-checkAbfrage nach booleschen Eigenschaften in spring-data-jpa ohne Verwendung von Methodenparameternyes