2015-03-23 20 views
15

Yay verilerinin depolarını kullanıyorum - çok kullanışlı bir şey ama bir sorunla karşılaştım. Kolayca bütün varlık güncelleyebilir ama yalnızca tek bir alanı güncelleştirmek için gerektiğinde anlamsız olduğuna inanıyoruz:Yay verilerini kullanarak tek bir alanı güncelleştirin jpa

@Entity 
@Table(schema = "processors", name = "ear_attachment") 
public class EARAttachment { 

    private Long id; 
    private String originalName; 
    private String uniqueName;//yyyy-mm-dd-GUID-originalName 
    private long size; 
    private EARAttachmentStatus status; 

Sadece yöntem kurtarmak çağrı güncellemek için.

batching 1 statements: 1: update processors.ear_attachment set message_id=100, 
original_name='40022530424.dat', 
size=506, 
status=2, 
unique_name='2014-12-16-8cf74a74-e7f3-40d8-a1fb-393c2a806847-40022530424.dat' 
where id=1 

böyle bazı şey görmek istiyorum: günlüğünde ben followwing bkz

batching 1 statements: 1: update processors.ear_attachment set status=2 where id=1 

Spring'in depoları

adı kurallarını kullanarak bir şey seçmek için tesislerin çok şey var, belki benzer bir şey olduğunu updateForStatus (int durumu) gibi güncelleme için;

cevap

22

Böyle bir şey deneyebilirsiniz:

@Modifying 
@Query("update EARAttachment ear set ear.status = ?1 where ear.id = ?2") 
int setStatusForEARAttachment(Integer status, Long id); 

Ayrıca bu gibi adlandırılmış params kullanabilirsiniz:

@Modifying 
@Query("update EARAttachment ear set ear.status = :status where ear.id = :id") 
int setStatusForEARAttachment(@Param("status") Integer status, @Param("id") Long id); 

int dönüş değeri güncellenen bu satırların sayısıdır. Ayrıca void dönüşünü de kullanabilirsiniz.

reference belgelerine bakın.

+0

Teşekkürler, şimdi çalışıyorum, ama entityManager.creatQuery (..) kullanarak daha iyi olup olmadığını merak ediyorum? Güvenli bir şey arıyorum –

+0

@DmitriiBorovoi Bu da doğru hatırlıyorum eğer, em.createQuery' olarak da adlandırılır, böylece samething. Güvenli bir şey istiyorsanız, sorguyu oluşturmak için hangi özniteliklerin değiştirildiğini bilmenin bir yoluna ihtiyacınız olacaktır. Bundan sonra, sorguyu yürütmek için özel deposu kullanabilirsiniz (http://docs.spring.io/spring-data/data-jpa/docs/current/reference/html/#repositories.custom-implementations). –

İlgili konular