2017-08-17 4 views
0
public class Enterprise{ 
..... 
    @OneToMany(mappedBy = "enterprise", fetch = FetchType.EAGER) 
    private List<Organization> organizations; 
..... 
} 

public class Organization{ 
.... 
    @ManyToOne 
    @JoinTable(name = "enterprise_organization_map", joinColumns = { 
      @JoinColumn(name = "organization_id") }, inverseJoinColumns = { @JoinColumn(name = "enterprise_id") }) 
    private Enterprise enterprise; 
.... 
} 

Wenn ich versucht, Enterprise zu holen, bekomme ich nicht die abgebildeten Organisationen. es gibt null zurück.@OneToMany gibt null Wert im Frühjahr Daten jpa

// print-Anweisung

Unternehmen mit Organisationen: Unternehmen [enterpriseId = 13, enterpriseName = xyz, Organisationen = null]

Kann mir jemand bitte hier helfen.

+1

Wie haben Sie es eingefügt, und wie haben Sie es abgerufen? –

+0

@AmerQarabsa Verwenden von JpaRepository. Organisationsorganisation = neue Organisation(); organization.setOrganizationName ("XYZSoftware"); organization.setEnterprise (Unternehmen); Organisation savedOrganization = this.repository.save (Organisation); System.out.println ("Unternehmen mit Organisationen:" + savedOrganization.getEnterprise(). GetOrganizations()); System.out.println ("Unternehmen mit Organisationen:" + this.enterpriseRepository.findOne (enterprise.getEnterpriseId())); – Krish

+0

Können Sie das Getting von Organisationen zeigen? –

Antwort

0

Bidirektionale one-to-many-Verbände Helfer Methoden erforderlich, um ‚Verbindung‘ beiden Entitäten finden Sie in dem manual:

Jedes Mal, wenn eine bidirektionale Assoziation gebildet wird, muss die Anwendung Entwickler sicherstellen, dass beide Seiten IN- zu jeder Zeit synchronisieren. Die addPhone() und removePhone() sind Dienstprogramme Methoden, die beide Enden beide Enden, wenn ein Kind Element hinzugefügt oder entfernt wird.

Also muss man auf Enterprise mindestens eine solche Methode hinzufügen und es verwenden, wenn Sie hinzufügen Organization-Enterprise:

public Enterprise addOrganization(Organization organization) { 

    organization.setEnterprise(this); 
    this.organizations.add(organization); 
    return this; 
} 

ich nicht solche Methode in Ihrem Code sehen Sie. Ich denke, das ist der Grund für dein Problem.

Zusätzliche nützliche Informationen über one-to-many finden Sie hier: Best Practices for Many-To-One and One-To-Many Association Mappings.

+0

Nein. Es gibt kein Problem mit Hinzufügen oder Aktualisieren. Ich habe auch DB eingecheckt. Wie auch immer, dieses Problem wurde behoben. Jetzt das Problem, wenn ich versuchte, die Datensätze abzurufen. Auf der variablen Ebene habe ich die Organisationen [email protected] (mappedBy = "enterprise", fetch = FetchType.EAGER) private List Organisationen; Wenn ich die Organisationen aus der Enterprise.toString() entferne, kann ich sie bekommen. Das Problem ist jetzt, Enterprise-> Organisation-> Enterprise-> .... rekursive Objekt-Build ist passiert. Ich möchte das Objekt nur einmal bekommen. Wie man es repariert ? d.h. nur Unternehmen-> Organisation. – Krish

+0

Das ist also eine andere Frage? Könnten Sie es als neues veröffentlichen? Und welcher Ansatz hat Ihnen geholfen, Ihre erste Frage zu lösen (über einen Nullwert)? – Cepr0

+0

@Krishna 'Enterprise-> Organisation-> Enterprise->' - es passiert nur in irgendeiner Methode. Sie sollten die neue Frage posten und alle Details angeben. – Cepr0

0

ist das Problem mit der toString().

Verwandte Themen