2017-06-09 40 views
5

Varlık şuna benzer:Enum parametresini JpaRepository nativeQuery içine kullanabilir miyim?

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

Kod bu şekilde çalışır:

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); 

Ama nativeQuery ile aynı pasajı - yapmaz:

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

Ve inancım yok herhangi bir istisna, sadece boş liste.

Bunu nasıl düzeltebilirim? nativeQuery ile enum kullanmak mümkün mü?

P.S String'u ApplicationStatus yerine yönteme geçirebilirim, ancak başka bir seçenek var mı?

+0

Herhangi bir hata var mı? NativeQuery ile snippet'i çalıştırdıktan sonra ne elde edersiniz? –

+1

Muhtemel yinelenmesi [Enum'u varlıkta kullanırken soru sorma ile ilgili sorunlar] (https://stackoverflow.com/questions/8217144/problems-with-making-a-query-when-using-enum-in-entity) –

+0

@the_bluescreen Herhangi bir özel durum yok, sadece boş liste –

cevap

0

buna ne dersiniz?

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

Sorumu basitleştirilmiş örnek kullanıyorum, gerçek kod yolum daha karmaşık ve 'nativeQuery' kullanmam gerekiyor. –

0

Paramizi geçmeden dizeye dönüştürebilirsiniz.

+0

Yukarıda yazdığım gibi "P.S String'i ApplicationStatus yerine yönteme aktarabilirim ama belki başka bir seçenek var mı?" –

İlgili konular