Spring-Daten-JPA-Repository Reihenfolge durch Verlust von Nullwerten in Ergebnissen

Ich verwende spring-data und ein jpa-Repository für meine Abfragen. Ich habe ein Problem, bei dem eine Entität mit einem ManyToOne-Feld vorhanden ist. Wenn ich in einer Abfrage nach diesem Feld ordne, werden keine Werte in meiner Liste zurückgegeben, die für dieses Feld den Wert Null haben. Dies scheint kein richtiges Verhalten zu sein.

So sehen meine Entitäten aus:

@Entity
public class Item {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Basic(optional = false)
@NotNull
@Column(name = "id")
private Integer id;


@Size(max = 255)
@Column(name = "name")
private String name;

@JoinColumn(name = "owner_user_id", referencedColumnName = "id")
@ManyToOne(fetch = FetchType.LAZY)
private User ownerUserId;

}

Dann die ManyToOne-Benutzerentität

@Entity
public class User {

@Size(max = 100)
@Column(name = "email")
private String email;
@Size(max = 256)
@Column(name = "first_name")
private String firstName;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Basic(optional = false)
@NotNull
@Column(name = "id")
private Integer id;

@OneToMany(cascade = CascadeType.ALL, mappedBy = "ownerUserId", fetch = FetchType.LAZY)
private Collection<Item> itemCollection;


}

Ich habe mein JPA-Repository wie folgt:

@Transactional
public interface ItemRepository extends JpaRepository<Item, Integer> {

 @Query("FROM Item i where name = ?1");
 Page<Item> findItemWithName(String name, Pageable pageable);
}

Ich habe den Code stark vereinfacht, damit Sie sich ein Bild machen können. Alle Abfragen funktionieren einwandfrei. Das Problem tritt auf, wenn ich die Sortierung in meinem Pageable-Objekt so einstelle, dass sie in der owner_user_id-Spalte sortiert wird. Wenn einer der Einträge in der Artikeltabelle eine Null für owner_user_id hat, werden sie nicht in der Liste zurückgegeben.

Gibt es eine Art Anmerkung, die ich hinzufügen kann, um das zu umgehen? Oder noch etwas, was ich tun kann? Ich möchte das Repository wirklich weiter nutzen, glaube aber nicht, dass ich es tun werde, wenn ich das nicht umgehen kann. Ich verwende den Ruhezustand und MYSQL, nicht sicher, ob das Teil des Problems ist.

Vielen Dank.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage