Cómo insertar una entidad incrustada en la base de datos utilizando el repositorio R2DBC.
Estoy utilizando el repositorio R2DBC para operaciones reactivas. Estoy tratando de insertar un registro que tiene un objeto Java agregado. Por ejemplo, Persona es una entidad dentro de la cual tengo Referencia de clase embebida diferente para Dirección. Ahora, quiero insertar los datos del objeto Persona en la base de datos.
Mi estructura de clase y base de datos se ve así:
@Data
@NoArgsConstructor
public class Person {
@Id
private Long id;
private String name;
private Address address;
}
@NoArgsConstructor
@Data
public class Address {
private String city;
private String state;
}
Estructura de la tabla Persona en PostgreSQL:
CREATE TABLE Person(
ID INT PRIMARY KEY NOT NULL,
NAME TEXT NOT NULL,
CITY TEXT NOT NULL,
STATE TEXT NOT NULL,
);
NOTA: Sé cómo lograr esto usando el repositorio JPA, es decir, mediante el uso de las anotaciones @Embedded y @Embeddable.
Pero estoy buscando una manera de hacer lo mismo usando el repositorio R2DBC.
También quiero confirmar que he leído en algún lugar del blog que R2DBC no admite estructuras similares embebidas como las utilizadas para clases de entidad. Además, no admite asociaciones como OneToOne, OneToMany, ManyToOne y ManyToMany.
davy.ai
¿Es verdad?
Sí, es verdad que R2DBC no soporta estructuras embebidas o asociaciones como OneToOne, OneToMany, ManyToOne y ManyToMany. Sin embargo, todavía puedes lograr el mismo resultado mapeando manualmente los datos desde el objeto Person a la tabla Person.
Por ejemplo, puedes utilizar
R2dbcEntityTemplate
para insertar los datos en la tabla Person. Puedes utilizar el métodomap
para mapear los datos desde el objeto Person a la tabla Person.Esto insertará los datos desde el objeto Person en la tabla Person.