spring jpa @PreUpdate потерял файл при вызове PreUpdate - PullRequest
0 голосов
/ 02 мая 2018

У меня есть фрагмент объекта, который содержит файл (является байтовым массивом), когда я обновлю запись фрагмента, который последний потерял свой файл:

@Entity
@EntityListeners({ PieceListener.class })
public class Piece extends AbstractAuditingEntity {
    @Id 
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    private Long idPiece;
    @Transient
    @NotNull
    private byte[] file;

    public byte[] getFile() {
        return file;
    }

    public void setFile(byte[] file) {
        this.file = file;
    }
}

Слушатель (PieceListener):

public class PieceListener {
    private final Logger log = LoggerFactory.getLogger(PieceListener.class);
    @PreUpdate
    public void verificationConforme(Piece piece) {
        log.debug("piece id " + piece.getIdPiece);
        log.debug("piece content file " + (piece.getFile()!=null));
        .
        .

    }
@PrePersist
public void changePieceNameAndContentType(Piece piece) {
    log.debug("piece content file " + (piece.getFile()!=null));
}
}

А у контроллера часть:

@RestController
@RequestMapping("/api")
public class PieceResource {
    private final Logger log = LoggerFactory.getLogger(PieceResource.class);

    @PostMapping("/pieces")
    @Timed
    public ResponseEntity<Piece> createPiece(@Valid @RequestBody Piece piece) throws URISyntaxException {
        log.debug("REST request to save Piece : {}", piece);
        if (piece.getId() != null) {
            throw new BadRequestAlertException("A new piece cannot already have an ID", ENTITY_NAME, "idexists");
        }
        Piece result = pieceRepository.save(piece);
        return ResponseEntity.created(new URI("/api/pieces/" + result.getId()))
                .headers(HeaderUtil.createEntityCreationAlert(ENTITY_NAME, result.getId().toString())).body(result);
    }

    @PutMapping("/pieces")
    @Timed
    public ResponseEntity<Piece> updatePiece(@Valid @RequestBody Piece piece) throws URISyntaxException {
        log.debug("piece file is " + (piece.getFile() != null));
        log.debug("REST request to update Piece : {}", piece);
        if (piece.getId() == null) {
            return createPiece(piece);
        }
        log.debug("piece content file is " + (piece.getFile() != null));
        log.debug("piece file is " + piece.getFile());
        Piece result = pieceRepository.save(piece);
        return ResponseEntity.ok().headers(HeaderUtil.createEntityUpdateAlert(ENTITY_NAME, piece.getId().toString()))
                .body(result);
    }
}

в моей консоли я получаю идентификатор части idPiece но файл содержимого фрагмента false , даже если файл не нулевой !!.

У меня вопрос: почему файл пуст, и как я могу решить эту проблему?

...