当调用PreUpdate时,spring jpa @PreUpdate丢失文件

时间:2018-05-02 09:57:21

标签: java spring spring-data-jpa entitylisteners

我有一个包含文件的片段实体(是一个字节数组),当我将更新片段的录音时,最后一个丢失了她的文件:

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

y piece controller是:

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

在我的控制台中我得到了 piece id idPiece 但是片段内容文件 false ,即使该文件不是空的!!

我的问题是为什么文件为空,我该如何解决这个问题呢?

0 个答案:

没有答案