2010-10-25 12 views
43

Tengo un problema al configurar una relación uno a muchos en mi objeto anotado.mappedPor referencia una propiedad de entidad de destino desconocida

Tengo el siguiente:

@MappedSuperclass 
public abstract class MappedModel 
{ 
    @Id 
    @GeneratedValue(strategy=GenerationType.AUTO) 
    @Column(name="id",nullable=false,unique=true) 
    private Long mId; 

entonces este

@Entity 
@Table(name="customer") 
public class Customer extends MappedModel implements Serializable 
{ 

    /** 
    * 
    */ 
    private static final long serialVersionUID = -2543425088717298236L; 


    /** The collection of stores. */ 
    @OneToMany(mappedBy = "customer", cascade = CascadeType.ALL, fetch = FetchType.LAZY) 
    private Collection<Store> stores; 

y esto

@Entity 
@Table(name="store") 
public class Store extends MappedModel implements Serializable 
{ 

    /** 
    * 
    */ 
    private static final long serialVersionUID = -9017650847571487336L; 

    /** many stores have a single customer **/ 
    @ManyToOne(fetch = FetchType.LAZY) 
    @JoinColumn (name="customer_id",referencedColumnName="id",nullable=false,unique=true) 
    private Customer mCustomer; 

¿qué estoy haciendo aquí incorrecta

Respuesta

76

El atributo mappedBy es r haciendo referencia a customer mientras que la propiedad es mCustomer, de ahí el mensaje de error. Así que, o cambiar su asignación en:

/** The collection of stores. */ 
@OneToMany(mappedBy = "mCustomer", cascade = CascadeType.ALL, fetch = FetchType.LAZY) 
private Collection<Store> stores; 

O cambiar la propiedad de entidad en customer (que es lo que yo haría).

La referencia mappedBy indica "Ve a la propiedad del bean llamada 'cliente' en la cosa que tengo una colección para encontrar la configuración."

+0

que funcionó, esperaba usar el reflejo y el método setter o getter y no la propiedad directamente. – boyd4715

+0

@ boyd4715: Podría intentar mover sus anotaciones en los captadores para ver qué sucede cuando se usa el acceso a propiedades (vs acceso a campos). Por otro lado, el javadoc de 'mappedBy' dice * El campo que posee la relación * así que no estoy seguro de que esto cambie nada. –

+0

Eso funcionó, gracias por la rápida aclaración –

Cuestiones relacionadas