Create Table A (
ID varchar(8),
Primary Key(ID)
);
Create Table B (
ID varchar(8),
A_ID varchar(8),
Primary Key(ID),
Foreign Key(A_ID) References A(ID)
);
Dado que yo he creado dos tablas utilizando las sentencias SQL anterior, y quiero crear Entity
clases para ellos, para la clase B
, tengo estos atributos de miembro:Java JPA @OneToMany necesario para reciprocar @ManyToOne?
@Id
@Column(name = "ID", nullable = false, length = 8)
private String id;
@JoinColumn(name = "A_ID", referencedColumnName = "ID", nullable = false)
@ManyToOne(optional = false)
private A AId;
En la clase A
, ¿Necesito corresponder a la relación de muchos a uno?
@Id
@Column(name = "ID", nullable = false, length = 8)
private String id;
@OneToMany(cascade = CascadeType.ALL, mappedBy = "AId")
private List<B> BList; //<-- Is this attribute necessary?
¿Es una condición necesaria o una buena idea tener un recíproco @OneToMany
para la @ManyToOne
? Si tomo la decisión de diseño de omitir el atributo anotado @OneToMany
ahora, ¿eso volvería a afectarme más?
+1 y marque @Pascal Thivent: Por señalar puedo agregarlo más tarde si lo necesito: esa fue mi principal preocupación. – bguiz
Normalmente trato de evitar mapeos unidireccionales tanto como sea posible. El hecho de que algo en la base de datos se modele con una tabla de combinación separada (por la razón que sea) no significa que mi modelo de objeto tenga que hacer lo mismo. En el ejemplo anterior, un OneToOne-Mapping sería suficiente para la solución unidireccional (por supuesto, esto debe cumplir con el dominio). – lostiniceland