我有一个包含文件的片段实体(是一个字节数组),当我将更新片段的录音时,最后一个丢失了她的文件:
@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 ,即使该文件不是空的!!
我的问题是为什么文件为空,我该如何解决这个问题呢?