У меня есть фрагмент объекта, который содержит файл (является байтовым массивом), когда я обновлю запись фрагмента, который последний потерял свой файл:
@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 , даже если файл не нулевой !!.
У меня вопрос: почему файл пуст, и как я могу решить эту проблему?