DEV Community

Edgar Rios Navarro
Edgar Rios Navarro

Posted on

PK compuesta con Micronaut-R2DBC

Con Micronaut-Data, tenemos ComposeId out-of-the-box. El manejo es muy similar que JPA.

La tabla de ejemplo contiene una llave primaria formada por dos campos.

CREATE TABLE "author_detail_entity" ( "author_id" BIGINT NOT NULL, "book_id" BIGINT NOT NULL, PRIMARY KEY("author_id","book_id")); 
Enter fullscreen mode Exit fullscreen mode

Debemos usar las anotaciones provistas para tal fin: EmbeddedId, Embeddable.

import io.micronaut.data.annotation.*; @MappedEntity public class AuthorDetailEntity { @EmbeddedId private AuthorDetailId authorDetailId; public AuthorDetailEntity(AuthorDetailId authorDetailId) { this.authorDetailId = authorDetailId; } public AuthorDetailId getAuthorDetailId() { return authorDetailId; } } @Embeddable class AuthorDetailId { @MappedProperty("author_id") private final Long authorId; @MappedProperty("book_id") private final Long bookId; public AuthorDetailId(Long authorId, Long bookId) { this.authorId = authorId; this.bookId = bookId; } public Long getAuthorId() { return authorId; } public Long getBookId() { return bookId; } } 
Enter fullscreen mode Exit fullscreen mode

Extendemos la interface para obtener un CRUD reactivo.

@R2dbcRepository(dialect = Dialect.POSTGRES) public interface AuthorDetailRepository extends ReactiveStreamsCrudRepository<AuthorDetailEntity, AuthorDetailId> { } 
Enter fullscreen mode Exit fullscreen mode

Algunos métodos provistos son find*, delete*, etc.
alt text
alt text


Documentación

https://micronaut-projects.github.io/micronaut-data/lates/guide/#sqlCompositeId
https://gitlab.com/edgar.gs/mn-r2dbc.git

Top comments (0)