2012-03-14 65 views
7

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:JPA - EmbeddedId con @ManytoOne

@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, he escribir esto en mi persistence.xml:

<class>beans.Port</class> 
<class>beans.Resident</class> 

Pero cuando ejecuto el programa, sin importar lo que he escribir, 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, yo creo que es debido a la wich clase IdResident tiene un objeto de entidad en ella, pero no sé cómo se FIW

Respuesta

5

El mensaje de error que aparece lo explica bastante bien, Embeddable que se utiliza como una identificación incrustada puede contener solo asignaciones básicas, no relaciones. En JPA 2.0 especificación esto se contó con las palabras siguientes: asignaciones

relación definida dentro de una clase Identificación incorporado no son compatible.

apenas define atributos que son parte de Identificación del compuesto en exportable que se utiliza como ID incrustado, y las relaciones de mapa en propia entidad (o en otro integrable e incluyen asignaciones con @Embedded).

0

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.

Cuestiones relacionadas