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")); 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; } } Extendemos la interface para obtener un CRUD reactivo.
@R2dbcRepository(dialect = Dialect.POSTGRES) public interface AuthorDetailRepository extends ReactiveStreamsCrudRepository<AuthorDetailEntity, AuthorDetailId> { } Algunos métodos provistos son find*, delete*, etc.


Documentación
https://micronaut-projects.github.io/micronaut-data/lates/guide/#sqlCompositeId
https://gitlab.com/edgar.gs/mn-r2dbc.git
Top comments (0)