Erstens, ich bin wirklich neu in QueryDSL.
Ich verwende eine Spring + Hibernate-Umgebung.
Das Problem, mit dem ich konfrontiert bin, ist die Erstellung eines GenericDAO, um alle grundlegenden CRUD-Operationen zu implementieren, aber ich bin nicht sicher, wie ich die statische Referenz von einer QEntity bekomme.
Meine Entitätsklassenstruktur sieht so aus:
%Vor%Die Grundstruktur einer von QueryDSL generierten Entität
%Vor%Und das GenericDao würde so aussehen:
%Vor%Ein Ansatz wäre die Verwendung von Reflection, aber ich bin kein Verfechter der Verwendung dieser Methode, besonders in diesem Fall.
Eine andere Sache, von der ich mir nicht sicher bin, ist die obligatorische Verwendung der statischen Referenz von einer QEntity, um Abfragen zu erstellen, oder ist es in Ordnung, wenn ich einen Konstruktoraufruf mache, um ein neues Objekt zu erhalten. Was bedeutet der String im Konstruktorparameter?
%Vor%Das Problem, mit dem ich konfrontiert bin, ist die Erstellung eines GenericDAO, um alle zu implementieren die grundlegenden CRUD-Operationen, aber ich bin mir nicht sicher, wie bekomme ich die statische Referenz von einer QEntity.
Ohne einen Verweis auf die QEntity-Klasse ist es schwierig. Stellen Sie daher sicher, dass Sie Ihrem DAO eine Instanz bereitstellen.
Eine andere Sache, von der ich mir nicht sicher bin, ist die Verwendung des statischen Referenz von einer QEntity, um Abfragen zu erstellen, oder ist es in Ordnung, wenn ich a Konstruktoraufruf, um ein neues Objekt zu erhalten. Was macht der String in der Konstruktorparameter bedeuten?
Nein, das ist nicht obligatorisch, es ist eine praktische Instanz. Das Konstruktorargument ist der Variablenname. Wenn Sie eine benutzerdefinierte Instanz bereitstellen, müssen Sie sicherstellen, dass Sie denselben Variablennamen konsistent verwenden.
Stellen Sie außerdem sicher, dass Sie die neueste Version von Querydsl verwenden. PEntity sieht wie eine Klasse vor 2.0 aus.
Hier ist ein Beispiel für eine generische DAO-Superklasse für die Verwendung von Querydsl JPA Ссылка
Wenn Sie vermeiden möchten, den Q-Typ an Ihre DAO-Klasse zu übergeben, können Sie ein Muster wie dieses verwenden Ссылка
Der Variablenname ist der einfache Name Ihrer Entitätsklasse, wobei der erste Buchstabe in Kleinbuchstaben umgewandelt wird.