java - examples - manytoone spring
JPA-EmbeddedId con @ManytoOne (2)
En mi opinión, esto se basa en el mapeo ManyToOne en la clase IdResident porque el mensaje de error me empuja en esta dirección.
Tengo un problema con mi código (obviamente) y después de muchas búsquedas en Internet, no encuentro una respuesta a mi problema, entonces hago mi pregunta aquí. Tengo esto :
@Entity
public class Resident
{
/** Attributes */
@EmbeddedId
private IdResident idResident;
...
@Embeddable
public class IdResident {
@Column(name="NOM")
private String nom;
@ManyToOne
@JoinColumn(name="CODE")
private Port port;
...
@Entity
public class Port
{
/** Attributes */
@Id
@Column(name="CODE")
private String code;
@Column(name="NOM")
private String nom;
...
Y estoy usando Maven, escribí esto en mi persistence.xml:
<class>beans.Port</class>
<class>beans.Resident</class>
Pero cuando ejecuto el programa, no importa lo que haya escrito, tengo esto:
Exception Description: The mapping [port] from the embedded ID class
[class beans.IdResident] is an invalid mapping for this class. An embeddable class that
is used with an embedded ID specification (attribute [idResident] from the source
[class beans.Resident]) can only contain basic mappings. Either remove the non
basic mapping or change the embedded ID specification on the source to be embedded.
No veo dónde está mi error, creo que se debe a la clase IdResident que tiene un objeto Entity, pero no sé cómo resolverlo
El mensaje de error que obtienes lo explica bastante bien, Embeddable que se usa como un id. Integrado puede contener solo asignaciones básicas, no relaciones. En la especificación JPA 2.0 esto se cuenta con las siguientes palabras:
Las asignaciones de relaciones definidas dentro de una clase de identificación incrustada no son compatibles.
Simplemente defina los atributos que son parte de la identificación compuesta en embebible que se usa como id integrado, y las relaciones de los mapas en la propia entidad (o en otra incrustación e incluya mapeos con @Embedded).