2013-10-06 9 views
7

मैं हाइबरनेट का उपयोग करने के लिए एक सरल अभ्यास अनुप्रयोग पर काम कर रहा हूं। इसमें एक निर्माता की तरह सरल मैपिंग है जिसमें कई मोबाइल हो सकते हैं। लेकिन एक मोबाइल केवल एक निर्माता द्वारा निर्मित किया जा सकता है। यहां मुझे लगता है कि कोड होना चाहिए।: मैप किए गए एक अज्ञात लक्ष्य इकाई संपत्ति का संदर्भ

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; 
} 


} 

इस दूसरे डीटीओ

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; 
} 


} 

जब मैं अपने सर्वर यह मुझे कह त्रुटि देता प्रारंभ करने का प्रयास .. org.hibernate.AnnotationException: mappedBy reference anunknown target entity property: mobileconsumers.entity.dto.MobileDTO.manufacturerDTO in mobileconsumers.entity.dto.ManufacturerDTO.mobileDTOs मानचित्रण मेरे लिए ठीक हो रहा है है। वास्तव में कुछ मूर्खतापूर्ण होना चाहिए कि मैं याद कर रहा हूं। आँखों के बस की जरूरत ताज़ा जोड़ी, मेरे कोड को देखने के लिए और यह पता लगाने क्या गलत हो रहा ..

उत्तर

7

बदलें mappedBy मूल्य इतना है कि यह संघ के @ManyToOne तरफ manufacturer संपत्ति संदर्भित करता है:

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

हाँ कि काम किया। और नीचे दिए गए जवाब ने मुझे बताया क्यों। मुझे लगता है कि गेटर्स और सेटर्स बनाने के दौरान मैंने कुछ गलत किया। बहुत बहुत धन्यवाद .. – SandeepKumar

+0

@ संदीप कुमार आपका स्वागत है। –

संबंधित मुद्दे