У меня есть приложение, использующее базу данных hibernate 5.4.10 и Postgres 11. Когда я сохраняю сущность «FileObject», которая содержит большой двоичный объект, Postgres добавляет запись в таблицу pg_largeobject_metadata. Это ожидается и правильно. Но когда я сохраняю тот же объект во второй раз для обновления fileName, появляется другая запись в pg_largeobject_metadata.
select count(*) from pg_largeobject_metadata
возвращает 2, но должно быть 1
Вот сущность ..
@Entity
@Data
@EqualsAndHashCode(of = "id")
public class FileObject {
@Id
@GeneratedValue
private Long id;
@NotNull
private String fileName;
@NotNull
private Long length;
@Lob
private Blob data;
}
Каждое дальнейшее сохранение () производит еще один запись. Это не верно.
Optional <FileObject> fileObject = fileRepository.findById( (long) 1 );
if (!fileObject.isEmpty()) {
FileObject file2 = fileRepository.save(fileObject.get()); // saving produces on more entry in pg_largeobject_metadata
fileRepository.save(file2); // again on more entry ..
}
Как я могу изменить это поведение? Если возможно, это должно быть решение, которое работает и для других баз данных.