2016-10-05 2 views
0

Ich ging durch mehrere Beiträge, aber keiner von ihnen arbeitete für mich. Ich versuche, einen Cnsm-Datensatz und den zugehörigen untergeordneten Datensatz cnsmPrefCntcInfos zur gleichen Zeit abzurufen. Ich bin auch in der Lage zu sehen, Hibernate-Abfrage generiert, um den untergeordneten (cnsmPrefCntcInfos) Datensatz abzurufen. Wenn ich jedoch CNSM drucke, bekomme ich ein leeres Objekt zurück.JPA eifrig holen keine Ergebnisse zurück

@Entity 
@Table(name = "CNSM") 
public class Cnsm implements java.io.Serializable { 

private BigDecimal cnsmId; 
private String cnsmFstNm; 
private String cnsmMidlNm; 

@Id 

@Column(name = "CNSM_ID", unique = true, nullable = false, precision = 22, scale = 0) 
public BigDecimal getCnsmId() { 
    return this.cnsmId; 
} 

public void setCnsmId(BigDecimal cnsmId) { 
    this.cnsmId = cnsmId; 
} 

@Column(name = "CNSM_FST_NM", length = 35) 
public String getCnsmFstNm() { 
    return this.cnsmFstNm; 
} 

public void setCnsmFstNm(String cnsmFstNm) { 
    this.cnsmFstNm = cnsmFstNm; 
} 

@Column(name = "CNSM_MIDL_NM", length = 25) 
public String getCnsmMidlNm() { 
    return this.cnsmMidlNm; 
} 

public void setCnsmMidlNm(String cnsmMidlNm) { 
    this.cnsmMidlNm = cnsmMidlNm; 
} 

@OneToMany(fetch = FetchType.EAGER, mappedBy = "cnsm") 
private Set<CnsmPrefCntcInfo> cnsmPrefCntcInfos = new HashSet<CnsmPrefCntcInfo>(0); 



public Set<CnsmPrefCntcInfo> getCnsmPrefCntcInfos() { 
    return this.cnsmPrefCntcInfos; 
} 

public void setCnsmPrefCntcInfos(Set<CnsmPrefCntcInfo> cnsmPrefCntcInfos) { 
    this.cnsmPrefCntcInfos = cnsmPrefCntcInfos; 
} 

}

@Entity 
@Table(name = "CNSM_PREF_CNTC_INFO") 
public class CnsmPrefCntcInfo implements java.io.Serializable { 



private BigDecimal cnsmPrefCntcInfoId; 
private Cnsm cnsm; 
private String cntcTyp; 

private Set<CnsmPrefPstAdr> cnsmPrefPstAdrs = new HashSet<CnsmPrefPstAdr>(0); 
private Set<CnsmPrefTelCmnct> cnsmPrefTelCmncts = new HashSet<CnsmPrefTelCmnct>(0); 





@Id 

@Column(name = "CNSM_PREF_CNTC_INFO_ID", unique = true, nullable = false, precision = 22, scale = 0) 
public BigDecimal getCnsmPrefCntcInfoId() { 
    return this.cnsmPrefCntcInfoId; 
} 

public void setCnsmPrefCntcInfoId(BigDecimal cnsmPrefCntcInfoId) { 
    this.cnsmPrefCntcInfoId = cnsmPrefCntcInfoId; 
} 

@ManyToOne(fetch = FetchType.LAZY) 
@JoinColumn(name = "CNSM_ID") 

public Cnsm getCnsm() { 
    return this.cnsm; 
} 

public void setCnsm(Cnsm cnsm) { 
    this.cnsm = cnsm; 
} 

@Column(name = "CNTC_TYP", length = 50) 
public String getCntcTyp() { 
    return this.cntcTyp; 
} 

public void setCntcTyp(String cntcTyp) { 
    this.cntcTyp = cntcTyp; 
} 



@OneToMany(fetch = FetchType.LAZY, mappedBy = "cnsmPrefCntcInfo") 
public Set<CnsmPrefPstAdr> getCnsmPrefPstAdrs() { 
    return this.cnsmPrefPstAdrs; 
} 

public void setCnsmPrefPstAdrs(Set<CnsmPrefPstAdr> cnsmPrefPstAdrs) { 
    this.cnsmPrefPstAdrs = cnsmPrefPstAdrs; 
} 

@OneToMany(fetch = FetchType.LAZY, mappedBy = "cnsmPrefCntcInfo") 
public Set<CnsmPrefTelCmnct> getCnsmPrefTelCmncts() { 
    return this.cnsmPrefTelCmncts; 
} 

public void setCnsmPrefTelCmncts(Set<CnsmPrefTelCmnct> cnsmPrefTelCmncts) { 
    this.cnsmPrefTelCmncts = cnsmPrefTelCmncts; 
} 

} 

Repo Service

@Query("SELECT c FROM Cnsm c WHERE c.id = '123'") 

Cnsm findCnsmById(); 

Hauptklasse

Cnsm c = IRepository.findCnsmById(); 
    System.out.print(c); // returns empty cnsmPrefCntcInfos object 

Hibernate: wählen cnsm0_.CNSM_ID als CNSM_ID1_4_, cnsm0_.CNSM_FST_NM als CNSM_FST4_4_, cnsm0_. CNSM_MIDL_NM als CNSM_MID6_4 _ Von CNSM cnsm0_ wo cnsm0_.CNSM_ID = 103

Unten ist die Hibernate-Abfrage, die erzeugt wird cnsmPrefCntcInfos zu holen, aber nicht sicher, warum cnsmPrefCntcInfos zurück leer kommt

Hibernate: wählen cnsmprefcn0_.CNSM_ID als CNSM_ID15_4_1_, cnsmprefcn0_.CNSM_PREF_CNTC_INFO_ID als CNSM_PRE1_7_1_, cnsmprefcn0_.CNSM_PREF_CNTC_INFO_ID als CNSM_PRE1_7_0_, cnsmprefcn0_.CNSM_ID als CNSM_ID15_7_0_, cnsmprefcn0_.CNTC_TYP als CNTC_TYP2_7_0_ von CNSM_PREF_CNTC_INFO cnsmprefcn0_ wo cnsmprefcn0_.CNSM_ID =?

Wie bekomme ich cnsmPrefCntcInfos (EAGER) beim Abrufen cnsm Objekt? Ich habe viele solche Assoziationen wie cnsmPrefCntcInfos in cnsm, die ich zum Zeitpunkt des Abrufs cnsm abrufen möchte.

+0

Sie überprüft die Datenbank und sicher, dass Sie Ihre Einträge dort haben? –

+0

Haben Sie beide Tabellen im gleichen Schema oder Differenzschema? – Gokul

+0

sie sind im gleichen Schema – user1736333

Antwort

0

in Ihrem Cnsm müssen Sie den Spaltennamen der ID in "CNSM_ID" ändern, und von dem, was ich sehe, ist Cnsm fetch nicht faul.

+0

Ich hatte bereits diese in meiner Getter-Methode, aber hatte es hier nicht erwähnt. Ich habe meinen Beitrag jetzt aktualisiert. und auch, ändern cnsm holen zu eifrig macht keinen Unterschied. – user1736333

Verwandte Themen