मैं अपने डेटाबेस की टेबल के साथ मेरी कक्षाओं मानचित्रण रहा हूँ, लेकिन जब एक परीक्षण चल रहा होना चाहिए, मैं निम्नलिखित त्रुटि मिलती है:एनोटेशन अपवाद: एक विदेशी कुंजी रिफायरिंग में कॉलम की गलत संख्या है। 2
// PROVINCIA TABLE
@Entity
@Table(name="provincia")
@NamedQuery(name = "Provincia.findAll", query = "SELECT p FROM Provincia p")
public class Provincia implements Serializable {
private static final long serialVersionUID = 1L;
@EmbeddedId
private ProvinciaPK id;
private String nombreProvincia;
// bi-directional many-to-one association to Region
@ManyToOne(fetch=FetchType.LAZY)
@JoinColumn(name = "codRegion")
private Region region;
//bi-directional many-to-one association to Ciudad
@OneToMany(mappedBy="provincia", fetch=FetchType.LAZY)
private List<Ciudad> ciudad;
//GETTER AND SETTER
//TABLE CIUDAD
/**
* The persistent class for the city database table.
*
*/
@Entity
@Table(name="ciudad")
@NamedQuery(name = "Ciudad.findAll", query = "SELECT c FROM Ciudad c")
public class Ciudad implements Serializable {
private static final long serialVersionUID = 1L;
@EmbeddedId
private CiudadPK id;
private String nombreCiudad;
// bi-directional many-to-one association to Provincia
@ManyToOne(fetch=FetchType.LAZY)
@JoinColumn(name = "codProvincia", insertable = false, updatable = false)
private Provincia provincia;
//bi-directional many-to-one association to Direcciones
@OneToMany(mappedBy="ciudad", fetch=FetchType.LAZY)
private List<Direcciones> direcciones;
// GETTER AND SETTER
दोनों है:
Caused by: org.hibernate.AnnotationException: A Foreign key refering com.modulos.pvs.acceso.datos.entity.Provincia from com.modulos.pvs.acceso.datos.entity.Ciudad has the wrong number of column. should be 2
at org.hibernate.cfg.annotations.TableBinder.bindFk(TableBinder.java:429)
at org.hibernate.cfg.ToOneFkSecondPass.doSecondPass(ToOneFkSecondPass.java:115)
at org.hibernate.cfg.Configuration.processEndOfQueue(Configuration.java:1550)
at org.hibernate.cfg.Configuration.processFkSecondPassInOrder(Configuration.java:1473)
at org.hibernate.cfg.Configuration.secondPassCompile(Configuration.java:1389)
at org.hibernate.cfg.Configuration.buildMappings(Configuration.java:1345)
at org.springframework.orm.hibernate3.LocalSessionFactoryBean.buildSessionFactory(LocalSessionFactoryBean.java:717)
at org.springframework.orm.hibernate3.AbstractSessionFactoryBean.afterPropertiesSet(AbstractSessionFactoryBean.java:211)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1541)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1479)
... 40 more
ये मेरे वर्ग हैं प्राथमिक कुंजी कक्षाओं में एम्बेडेड हैं।
//PROVINCIA PK
/**
* The primary key class for the provincia database table.
*
*/
@Embeddable
public class ProvinciaPK implements Serializable {
//default serial version id, required for serializable classes.
private static final long serialVersionUID = 1L;
private String codProvincia;
private String codRegion;
public ProvinciaPK() {
}
/getter and setter
//ciudad pk
/**
* The primary key class for the region database table.
*
*/
@Embeddable
public class CiudadPK implements Serializable {
//default serial version id, required for serializable classes.
private static final long serialVersionUID = 1L;
private String codCiudad;
private String codProvincia;
public CiudadPK() {
}
//GETTER AND SETTER
और यह मेरा संबंधपरक मॉडल डेटाबेस
किसी को भी किसी भी विचार है? इसमें से काम नहीं करता है?
संपादित 30/11/2014 - खाली एसोसिएशन सूची पर वापस जाएँ यह मेरा JUnit परीक्षण है
Region region = new Region();
region.setId(new RegionPK("RM","CHL"));
region.setProvincias(regionDAO.getProvinciaRegion(region));
System.out.println(region.getProvincias());
इस विधि है कि मुझे provincias
@Transactional(readOnly=true)
@Override
public List<Provincia> getProvinciaRegion(Region region) {
region = getRegionById(region);
Hibernate.initialize(region.getProvincias());
return region.getProvincias();
}
और इस मैं के सहयोग देता है डेटाबेस में
धन्यवाद, यह काम करता है!, लेकिन मुझे संदेह है, क्योंकि अगर मेरी तालिका में केवल एक है तो मुझे दो विदेशी कुंजी की आवश्यकता है? यह कुछ है जो मुझे –
समझा नहीं गया है आपको एक समग्र प्राथमिक कुंजी मिल रही है क्योंकि आप अपने कोड में '@ एम्बेडेड आईडी 'का उपयोग कर रहे हैं। क्या यह तुम्हारा इरादा नहीं था? –
अगर यह था, तो मुझे भ्रमित कर दिया था, लेकिन आप मुझे प्रबुद्ध करते हैं और मैं समझ गया। अन्यथा अन्यथा, क्योंकि अब मैं वर्ग में श्रेणी क्षेत्र के रूप में सूची को वापस करने का प्रयास करता हूं, लेकिन मैं एक खाली सूची देता हूं, आपको पता है कि वह क्यों है? मैंने इस पोस्ट को –