Обновление одного поля с использованием spring данных jpa

Я использую репозитории spring -data - очень удобная вещь, но я столкнулся с проблемой. Я легко могу обновить целую сущность, но я считаю бессмысленным, когда мне нужно обновить только одно поле:

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

чтобы обновить, я просто вызываю метод save. В журнале я вижу следующее:

    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 

Я хотел бы увидеть что-то вроде этого:

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

Spring В репозиториях есть много возможностей для выбора чего-либо, используя соглашения об именах, возможно, что-то похожее на обновление, например updateForStatus (int status);

Ответы

Ответ 1

Вы можете попробовать что-то вроде этого:

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

Вы также можете использовать именованные параметры, например:

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

Значение возвращаемого значения int - это количество строк, которое обновляется. Вы также можете использовать void return.

Подробнее в reference документации.