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.
图片[1]-PK compuesta con Micronaut-R2DBC - 拾光赋-拾光赋


Documentación

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

原文链接:PK compuesta con Micronaut-R2DBC

© 版权声明
THE END
喜欢就支持一下吧
点赞5 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容