Soru Spring data CrudRepository var


Uzandığımda CrudRepository arayüzü var exists(ID) alt metnimdeki yöntem. yazabilirim findBy<property> yöntemleri.

Bir şekilde yazmak mümkün mü existBy<property> dönecek yöntem boolean. Ya da not ekleyerek @Query(jpa query) bu yüzden dönecek boolean.

Biliyorum ki yapabilirim select count(*) ve dönüş longama sonra yapmak zorundayım !=0 Servis katmanımı kontrol et.


25
2017-08-29 16:50


Menşei


"ama sonra yapmam gerekecek! = 0 servis katmanımı kontrol et." Ayrıca sayım yerine var kullanmak db sorgusu için biraz daha verimli olur - WeGa


Cevaplar:


Aslında böyle bir durum ifadesini kullanabilirsiniz:

select case when count(e) > 0 then true else false end from Entity e
where e.property = ?1 -- here go your conditions

20
2017-08-31 18:28





Oleksandr'ın cevabı doğru, ancak işe alabilmek için tek yol şu şekilde oldu. PostgreSQL üzerinde Eclipselink kullanıyorum.

public interface UserRepository extends JpaRepository<User, Long>
{
    @Query("SELECT CASE WHEN COUNT(u) > 0 THEN 'true' ELSE 'false' END FROM User u WHERE u.username = ?1")
    public Boolean existsByUsername(String username);
}

20
2017-11-26 18:08



Spring Data için v1.11.0'dan önce iyi bir çözüm. @ alexander-camperov probleminizi çözdüğünü kabul ediyorsanız lütfen bu cevabı kabul edin. - naXa


Bahar Verisinden JPA 1.11.0.RELEASEşimdi kullanabilirsiniz exists yöntem isimlerinden sorgu türetme ile. Örneğin, User bir varlıkla email özellik, bunu yapabilirsiniz:

public interface UserRepository extends JpaRepository<User, Long> {

    boolean existsByEmail(String email);
}

11
2018-04-20 02:50



Görünüyor existsBy şimdi bozuldu: C jira.spring.io/browse/DATAJPA-851 - Alfonso Nishikawa


Kaynağa bakarsanız org.springframework.data.jpa.repository.support.SimpleJpaRepository.exists(ID) o zaman bir TypedQuery kayıtları saymak ve geri dönmek için:

query.getSingleResult() == 1

Sizin için benzer bir şey yapan bir sorgu oluşturabilirsiniz. existsBy(...) yöntemleri.


2
2017-08-29 17:35



evet, kaynak koduna baktım. O zamana kadar Dao arayüzümü uygulamak zorunda kalacağım. Bunu yapmak istemediğim zaman çözüm arıyordum. - Alexander Camperov