2015-03-23 9 views
15

Ich verwende spring-data-Repositories - sehr praktisch, aber ich hatte ein Problem. Ich kann leicht ganze Einheit zu aktualisieren, aber ich glaube, dass es sinnlos ist, wenn ich nur ein einziges Feld zu aktualisieren:Einzelfeld mit Federdaten aktualisieren 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; 

zu aktualisieren Ich Methode speichern rufen Sie einfach an. In log sehe ich die followwing:

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 

Ich möchte etwas, was so sehen:

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

Spring Repositorys viele Einrichtungen haben, etwas mit Namenskonventionen wählen vielleicht ist es etwas ähnliches für das Update wie updateForStatus (int status);

Antwort

22

Sie können so etwas wie dies versuchen:

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

Sie können auch genannt params verwenden, wie folgt aus:

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

Der int Rückgabewert ist die Anzahl der Zeilen, in denen aktualisiert. Sie können auch void zurückgeben.

Weitere Informationen finden Sie in der Dokumentation .

+0

Danke, arbeite jetzt, aber ich frage mich, ob es besser ist als mit entityManager.creatQuery (..)? Ich bin auf der Suche nach etwas Typ sicher –

+0

@ DmitriiBorovoi Dies wird auch 'em.createQuery' aufrufen, wenn ich mich richtig erinnere, so ist das Gleiche. Wenn Sie möchten, dass etwas sicher ist, müssen Sie wissen, welche Attribute geändert wurden, um die Abfrage zu erstellen. Danach können Sie das benutzerdefinierte Repository verwenden, um die Abfrage auszuführen (http://docs.spring.io/spring-data/data-jpa/docs/current/reference/html/#repositories.custom-implementations). –

Verwandte Themen