2015-07-10 9 views
10

Depomda özel bir deleteBy yöntem sorgusu oluşturmaya çalışıyorum. Silmek yerine, hazırda beklemede bir seçim yapmak gibi görünüyor.Spring data jpa deleteBy query çalışmıyor

hazırda: id1_2_ olarak contact0_.id seçin contact0_.emailAddress> emailAdd2_2_, contact0_.name olarak kişisinin name3_2_ contact0_ olarak nerede> contact0_

public interface ContactRepository extends JpaRepository<Contact, Integer> { 

    Integer deleteByEmailAddress(String emailAddress); 

    //and this one works 
    Contact findContactByName(String name); 
} 

ve burada hazırda yapmaya çalışıyor budur .emailAddress =?

Neyi eksik? Silme çalışmaları için özel bir konfigürasyon yapmak zorunda mıyım?

cevap

19

Sil, çalışmaz veya beklediğiniz gibi çalışmıyor mu? Bir varlık silinebilmesi için genellikle yönetilmelidir, bu nedenle bir JPA sağlayıcısı (sizin durumunuzda hazırda bekletme), önce öğeyi (gördüğünüz sorguyu) yükler, ardından silme işlemini yayınlar.

yalnızca sorgu görüyorsanız, ancak hiçbir silmek tekabül ederse, o zaman bazı durumlar:

  1. silmek bir şey yok, kayıt db
  2. silme ihtiyaçları için olduğundan emin olun bir işlemin parçası olmak. Sadece deleteByEmailAddress işlem

Not olduğu aradığını neyse emin olun değilse Bahar veri CRUD ops, varsayılan olarak işlem olduğuna inanıyoruz: Aşağıda, bir modifiye sorgusu silmek örneği kullanarak bir varlık çıkarmadan zaman seçme önleyebilirsiniz:

// NOTE: you have return void 
@Modifying 
@Transactional 
@Query(value="delete from Contact c where c.emailAddress = ?1") 
void deleteByEmailAddress(String emailAddress) 
+4

Çalışıyor. Çok teşekkür ederim efendim! Not: Ayrıca sorgu ile çalıştı ama ben sadece bir işlevsel bir yöntem sorgusu istedim. –

+1

Teşekkürler // // NOT: dönüş boşluğu var - Ben hepsini denedim ama bunun hakkında düşünmedim, bu benim davamın sebebiydi! – yetanothercoder

+0

@ikumen Query, Modifiye etme ve işlem ek açıklamalarıyla iyi çalışıyor ancak veritabanı satırında hala var. – Abhij

4

Yay Verilerinin modern sürümlerinde JPA (> = 1.7.x) silme, kaldırma ve sayma işlemlerine ilişkin sorgu türetme erişilebilir. i @Transactional ile yöntemini açıklama sonrasında

Spring Data: "delete by" is supported?

+2

Başladığım yer burası, ama sorumu yanıtlamıyor. –