Обновление одного поля с использованием 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 документации.