2013-10-06 12 views
7

Sto lavorando a un'applicazione di pratica semplice per l'utilizzo di ibernazione. Ha una mappatura semplice come un produttore può avere molti cellulari. Ma un cellulare può essere prodotto solo da un singolo produttore. Ecco cosa penso che dovrebbe essere il codice.: mappedBy fa riferimento a una proprietà di entità di destinazione sconosciuta

package mobileconsumers.entity.dto; 
import javax.persistence.Column; 
import javax.persistence.Entity; 
import javax.persistence.FetchType; 
import javax.persistence.GeneratedValue; 
import javax.persistence.GenerationType; 
import javax.persistence.Id; 
import javax.persistence.JoinColumn; 
import javax.persistence.ManyToOne; 
import javax.persistence.Table; 


@Entity 
@Table(name="ms_ref_mobile") 
public class MobileDTO { 

private Long id; 
private String model; 
private ManufacturerDTO manufacturerDTO; 

@Id 
@GeneratedValue(strategy=GenerationType.IDENTITY) 
@Column(name="MOBILE_ID") 
public Long getId() { 
    return id; 
} 
public void setId(Long id) { 
    this.id = id; 
} 
public String getModel() { 
    return model; 
} 
public void setModel(String model) { 
    this.model = model; 
} 
@ManyToOne(fetch=FetchType.LAZY) 
@JoinColumn(name="MANUFACTURER_ID") 
public ManufacturerDTO getManufacturer() { 
    return manufacturerDTO; 
} 
public void setManufacturer(ManufacturerDTO manufacturer) { 
    this.manufacturerDTO = manufacturer; 
} 


} 

questo è il secondo dto

package mobileconsumers.entity.dto; 

import java.util.HashSet; 
import java.util.Set; 

import javax.persistence.Column; 
import javax.persistence.Entity; 
import javax.persistence.FetchType; 
import javax.persistence.GeneratedValue; 
import javax.persistence.GenerationType; 
import javax.persistence.Id; 
import javax.persistence.OneToMany; 
import javax.persistence.Table; 

@Entity 
@Table(name="ms_ref_manufacturer") 
public class ManufacturerDTO { 

private Long id; 
private String name; 
private Set<MobileDTO> mobileDTOs = new HashSet<>(0); 

@Id 
@GeneratedValue(strategy=GenerationType.IDENTITY) 
@Column(name="MANUFACTURER_ID") 
public Long getId() { 
    return id; 
} 
public void setId(Long id) { 
    this.id = id; 
} 
@Column(name="NAME") 
public String getName() { 
    return name; 
} 
public void setName(String name) { 
    this.name = name; 
} 
@OneToMany(fetch=FetchType.LAZY,mappedBy="manufacturerDTO") 
public Set<MobileDTO> getMobileDTOs() { 
    return mobileDTOs; 
} 
public void setMobileDTOs(Set<MobileDTO> mobileDTOs) { 
    this.mobileDTOs = mobileDTOs; 
} 


} 

Quando provo ad iniziare il mio assistente mi dà un errore che dice .. org.hibernate.AnnotationException: mappedBy reference anunknown target entity property: mobileconsumers.entity.dto.MobileDTO.manufacturerDTO in mobileconsumers.entity.dto.ManufacturerDTO.mobileDTOs La mappatura sembra essere bene a me. deve esserci qualcosa di veramente sciocco che mi sto perdendo. nuovo paio solo bisogno di occhi per guardare il mio codice e capire cosa sta sbagliato ..

risposta

7

Change mappedBy valore, in modo che esso si riferisce alla proprietà manufacturer sul lato @ManyToOne dell'associazione:

@OneToMany(fetch=FetchType.LAZY,mappedBy="manufacturer") 
public Set<MobileDTO> getMobileDTOs() { 
    return mobileDTOs; 
} 
+0

Sì che lavorato. e la risposta qui sotto mi ha detto perché. Penso di aver fatto qualcosa di sbagliato durante la creazione di getter e setter. Grazie mille .. – SandeepKumar

+0

@SandeepKumar sei il benvenuto. –

Problemi correlati