Хранение java. sql .Blob с Hibernate в Postgres DB создает несколько записей в pg_largeobject_metadata - PullRequest
0 голосов
/ 18 февраля 2020

У меня есть приложение, использующее базу данных 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 .. 

    }

Как я могу изменить это поведение? Если возможно, это должно быть решение, которое работает и для других баз данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...