Tavaszi JPA @Embedded és @EmbeddedId

1. Áttekintés

Ebben az oktatóanyagban kitérünk a @EmbeddedId kommentár és „findBy”Módszer egy összetett kulcs alapú JPA entitás lekérdezéséhez.

Ennélfogva használjuk @EmbeddeId és @ Beágyazható jelölések az összetett kulcsok képviseletére a JPA entitásokban. A tavaszt is használnunk kell JpaRepository hogy elérjük célunkat.

Arra fogunk koncentrálni, hogy lekérdezzük az objektumokat részleges elsődleges kulcs alapján.

2. Szükség @ Beágyazható és @EmbeddedId

A szoftverben sok olyan felhasználási esettel találkozunk, amikor összetett elsődleges kulcsra van szükségünk egy táblázat bejegyzésének meghatározásához. Az összetett elsődleges kulcsok olyan kulcsok, amelyek egynél több oszlopot használnak a táblázat egy sorának egyedi azonosításához.

Összetett elsődleges kulcsot képviselünk a Spring Data-ban a @ Beágyazható jegyzet egy osztályra. Ez a kulcs ezután beágyazódik a táblázat megfelelő entitásosztályába, mint összetett elsődleges kulcs a @EmbeddedId megjegyzés a @ Beágyazható típus.

3. Példa

Fontolja meg a könyv táblázat, ahol a könyv A rekord összetett elsődleges kulccsal rendelkezik szerző és név. Néha érdemes megtalálni könyveket az elsődleges kulcs egy részével. Például, egy felhasználó csak egy adott könyv alapján szeretne könyveket keresni szerző. Megtanuljuk, hogyan lehet ezt a JPA-val megtenni.

Elsődleges alkalmazásunk egy @ Beágyazható BookId és @Entity Book val vel @EmbeddedId BookId.

3.1. @ Beágyazható

Határozzuk meg a sajátunkat BookId osztály ebben a szakaszban. A szerző és név megad egy egyedit BookId - az osztály az Sorosítható és megvalósítja mindkettőt egyenlő és hash kód mód:

@Embeddable public class BookId implementálja a Serializable {private String szerzőt; privát karakterlánc neve; // szabványos mérőeszközök és beállítók}

3.2. @Entity és @EmbeddedId

A mi Könyv entitás rendelkezik @EmbeddedIdBookId és az a-val kapcsolatos egyéb területek könyv. BookId elmondja a JPA-nak, hogy a Könyv az entitás összetett kulccsal rendelkezik:

@Entity public class Book {@EmbeddedId private BookId id; privát vonós műfaj; privát Egész ár; // szabványos mérőeszközök és beállítók}

3.3. JPA adattár és módszer elnevezése

Határozzuk meg gyorsan a JPA adattár felületünket a JpaRepository entitással Könyv továbbá BookId:

@Repository nyilvános felület A BookRepository kiterjeszti a JpaRepository {List findByIdName (karakterlánc neve); List findByIdAuthor (karakterlánc szerző); }

Használjuk a id változó mezőnevei a Spring Data lekérdezési metódusok levezetéséhez. Ezért a JPA a részleges elsődleges kulcs lekérdezést a következőképpen értelmezi:

findByIdName -> direktíva "findBy" mező "id.name" findByIdAuthor -> direktíva "findBy" mező "id.author"

4. Következtetés

A JPA felhasználható az összetett kulcsok hatékony feltérképezésére és lekérdezésére származtatott lekérdezéseken keresztül.

Ebben a cikkben láttunk egy kis példát a részleges id mező keresésének futtatására. Megnéztük a @ Beágyazható jelölés az összetett elsődleges kulcs és a @EmbeddedId annotáció egy összetett kulcs beszúrásához egy entitásba.

Végül láttuk, hogyan kell használja a JpaRepositoryfindBy származtatott módszerek részleges id mezőkkel keresni.

Mint mindig, az oktatóanyag példakódja elérhető a GitHubon.