jak unikać duplikacji rekordów w DB Java Spring Boot

0

Chcę zapisywać dane w DB i w przypadku gdy już istnieje rekord to zapisu nie dokonywać na DB. Pytanie czy spring boot/ hibernate może realizować to tak abym nie musiał implementować If'a sprawdzającego czy rekord już istnieje ...

zakładam że zamiast pola id można użyć pól klasy aby zbudować index i unikatowość

@Table(uniqueConstraints = {@UniqueConstraint(columnNames = { "word","partOfSpeach" }) })
@Entity

public class English implements Word {

public interface EnglishRepository  extends JpaRepository<English,Long>{
0

Zwyczajny klucz unique jest już niemodny?

0

A nie wiem co masz na myśli :)

0

unikalność powinna być zachowana dla kombinacji dwóch pół "word","partOfSpeach"

0

z powyższą implementacją dostaje :

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'runAtStart': Invocation of init method failed; nested exception is org.springframework.dao.DataIntegrityViolationException: could not execute statement; SQL [n/a]; constraint ["UK2NI69HGRRXRVDKCB8ATJAA33R_INDEX_C ON PUBLIC.ENGLISH(WORD, PART_OF_SPEACH) VALUES ('108', 1, 1)"; SQL statement:>

0

A na pewno nie masz już teraz rekordów niezgodnych z tym constraintem?

0

problem występuje gdy chcę dodać obiekty które już istnieją w DB, Moim celem jest aby zapobiec dodawaniu duplikatów do db

0

Słabo mi po prostu.
No to teraz łaskawie pokaż JAK próbujesz te nowe rekordy dodać. Bo na oko masz tam te duplikaty i constraint je łapie, ale to powoduje że zapytanie sie wywala (no bo co innego ma zrobić...) sygnalizując błąd, a ty wesoło zamiast to jakoś obsłużyć (bo przecież spodziewasz się że będzie DataIntegrityViolationException) to olewasz wyjątek, który leci dalej i wywala całą aplikacje.

0

Wyżej napisałem że istnieją już te rekordy
przy próbie dodania duplikatu wywala wyjątkiem.

Zdefiniuje problem jeszcze raz
Jak zapobiec dodawania duplikatów do DB (Spring Data)?

0
Szalony Karp napisał(a):

Wyżej napisałem że istnieją już te rekordy
przy próbie dodania duplikatu wywala wyjątkiem.

Zdefiniuje problem jeszcze raz
Jak zapobiec dodawania duplikatów do DB (Spring Data)?

Skoro wywala wyjątkiem to rekordu nie dodaje, a skoro nie dodaje to zabezpieczenie działa.

0

No ale przecież już zapobiegłeś! Nie dodadzą sie! Ale Spring nie jest jasnowidzem i NIE WIE co ty byś chciał zrobić jeśli ktoś spróbuje dodać duplikaty! Weź łaskawie złap ten wyjątek tam gdzie dodajesz dane do bazy i go jakoś obsłuż.

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