Problem z contraintem unique przy zmianie kolejności zdjęć

0

Cześć, mam sobie encję JPA i w niej listę zdjęć z zachowaniem kolejności:

    @CollectionTable(name = "item_image", joinColumns = @JoinColumn(name = "item_id"))
    @Column(name = "image_id")
    @ElementCollection(fetch = LAZY)
    @OrderColumn(name = "order_number")
    private List<Image> pictures;

przy updatowaniu zdjęć metodą

public void updateImages(final List<String> imagesUrls) {
        this.pictures = Optional.ofNullable(imagesUrls)
                .orElseGet(List::of)
                .stream()
                .map(Image::generate)
                .collect(toList());
}

dostaję http error 409 spowodowany naruszeniem więzów integralności, ponieważ image_url w db mam na unique.
Dlaczego hibernate nie aktualizuje po prostu kolumny z orderem tylko tego image_url?

Znacie jakieś sposoby ? Moze jednak usunąć constraint z db i sprawdzanie unikalności zrobić w kodzie?

0

@Column(unique=true) nic nie daje.

Jak podglądam logi to tam leci update przy tych obrazkach :/

2
  1. JPA mocno nie ogarnia jak używasz List i osobiście odradzam próbować, bo za chwilę przyjdziesz znowu pytać jak naprawić MultipleBagFetchException. Jeśli musisz używać JPA to załóż że wszystko musi być jako Set.
  2. Ja znam bardzo dobrą metodę na rozwiązanie takich problemów -> zaorać i wyrzucić JPA z projektu i problemy przestają występować.
0

No niestety muszę JPA.
Pokombinuję z Setem, bo lista mocno zasysa :/

@Shalom
dzięki za rady z Setem. Nie użyłem żadnej magicznej adnotacji do zachowania kolejności, napisałem to samemu i po prostu sortuje te zdjęcia w javie, a nie przy sqlce. Działa. To, że sortowanie robię w ramie nie jest problemem, bo każdy item ma max 10 zdj.

1 użytkowników online, w tym zalogowanych: 0, gości: 1