2017-06-09 91 views
5

Podmiot wygląda następująco:Czy mogę użyć parametru enum w JpaRepository nativeQuery?

@Getter 
@Setter 
@Entity 
public class Application { 
@Id 
private Long id; 
@Enumerated(EnumType.STRING) 
private ApplicationStatus status; 
} 

Kod działa w ten sposób:

public interface ApplicationRepository extends JpaRepository<Application, Long> { 
@Query("SELECT app FROM #{#entityName} AS app WHERE app.status LIKE :status") 
List<Application> find(@Param("status") ApplicationStatus status); 

ale ten sam fragment z nativeQuery - nie:

@Query(value = "SELECT app.* FROM application AS app WHERE app.status LIKE :status", nativeQuery = true) 
List<Application> findNative(@Param("status") ApplicationStatus status); 
} 

I don `t mam każdy wyjątek, po prostu pusta lista.

Jak mogę to naprawić? Czy można używać enum z nativeQuery?

P. S Mogę podać String do metody zamiast ApplicationStatus, ale może jest jeszcze inna opcja?

+0

Czy pojawił się błąd? Po otrzymaniu fragmentu kodu z nativeQuery, co otrzymujesz? –

+1

Możliwy duplikat [Problemy z wysłaniem zapytania przy użyciu Enum w encji] (https://stackoverflow.com/questions/8217144/problems-w-making-a-query-when-using-enum-in-entity) –

+0

@the_bluescreen Nie mam żadnego wyjątku, po prostu pusta lista –

Odpowiedz

0

co z tym?

public interface ApplicationRepository extends JpaRepository<Application, Long> { 
List<Application> findByStatus(ApplicationStatus status); 
+0

W moim pytaniu używam uproszczonego przykładu, mój prawdziwy kod jest bardziej skomplikowany i muszę użyć "nativeQuery". –

0

Można przekonwertować na ciąg przed przekazaniem parametrów.

+0

Jak mogę napisać powyżej "P. S mogę przekazać String do metody zamiast ApplicationStatus, ale może istnieje inna opcja?" –