2016-05-19 6 views
0

Ich möchte den Spaltenwert basierend auf Benutzeranmeldeinformationen auswählen.Federdaten jpa native Abfrage mit dynamischer Spalte in Select-Anweisung

Wenn der Benutzer admin ist, kann der Spaltenwert angezeigt werden, wenn für die jeweilige Spalte kein leerer Wert angezeigt werden soll. Beispielcode hier eingefügt, ich kann es nicht von Ende java steuern

public interface OrderRepository extends CrudRepository<Order, Long>(){ 
@Query(nativeQuery = true, value = "SELECT order_number from view_order order by created_on desc") 
    List<Object[]> findOrderNumber(); 

} 

was meine Idee ist, übergeben Sie die Spalte als ‚order_number‘, wenn der Benutzer admin. Wenn nicht, übergeben Sie es als leere Zeichenfolge wie ''. Ich konnte die gewünschte Ausgabe nicht erhalten. Jeder hat versucht, die dynamische native Abfrage im Frühjahr Daten zu generieren jpa Repository

@Query(nativeQuery = true, value = "SELECT (:order_number) from view_order order by created_on desc") 
List<Object[]> findOrderNumber(@Param("order_number") String order_number); 
+1

Das wird nicht funktionieren. Sie können die Spalten nicht parametrisieren. Eine solche Logik wird wahrscheinlich woanders besser behandelt. –

Antwort

0

Sie können eine Fallanweisung für Ihren Anwendungsfall verwenden.

so etwas wie unten dargestellt:

select 
    case usertype 
    when 'Admin' then orderNumber 
    else '' 
    end as number 
from orders 
+1

Dies ist mehr ein Kommentar als eine Antwort. Können Sie Ihre Antwort für den gewünschten Anwendungsfall beschreiben? – Patrick

+0

@ shankarsh15 Das hilft mir nicht :( – Hurix

+0

Das ist Ihre Anforderung richtig: Wenn der Benutzer admin ist, dann kann der Spaltenwert angezeigt werden, wenn nicht leerer Wert für die jeweilige Spalte angezeigt werden muss. – shankarsh15

Verwandte Themen