2016-07-21 14 views
0

Ich habe 2 Entitäten. Entität Nr.1 ​​enthält einige Felder und einige Auflistungen, eine Zuordnung zu vielen LAZY, und Entität Nr.2 hat eine OneToOne-Beziehung zu dieser.Hibernate OneToOne zu einer Entität mit OneToMany

Wenn ich Entity nr.2 abrufen möchte, alle Onetomany in Entity nr. 1 werden auch wiedergefunden, obwohl sie FALSCH sind. Ich spreche nicht über eine Methode, einfach eine Entität Nr.2 und Entität Nr.1 ​​ohne seine Sammlungen abzurufen.

Danke

Beispiele Code:

Dies ist nr Einheit. 2, die ein OneToOne rel Einheit nr.2 enthält, die so festgelegt ist:

@OneToOne 
@JoinColumn(name="id_employee") 
public Employee getEmployee() { 
    return employee; 
} 

public void setEmployee(Employee employee) { 
    this.employee = employee; 
} 

Und das ist nr.1 Einheit, die wie so viele Sammlungen hat:

@OneToMany(cascade = CascadeType.ALL, mappedBy="employee", orphanRemoval = true) 
@JsonManagedReference 
@XmlElement 
public Set<Phone> getPhone() { 
    return phone; 
} 

public void setPhone(Set<Phone> phone) { 
    this.phone = phone; 
} 

Ant Mitarbeiter haben viele Sammlungen einschließlich Adresse usw., die ich nicht gezeigt werden möchte. Wenn ich Entity nr zurückkomme. 2, zeigt es mir Mitarbeiter mit all seinen rels, und ich brauche das nicht. Es gibt mir auch die berühmte LazyInitexcepetion, obwohl ich Anfrage-Adresse oder Telefon nicht Ausdrücklich ...

+0

können Sie bitte teilen Sie Ihren Code – Gokul

+0

Ich habe es geteilt, danke – ChrisTheDestroyer

+0

, wenn Sie sagten, Rückkehr nr.2 'meinst du, Sie wollen nicht, dass es als xml oder json dargestellt/dargestellt? (Ich gehe davon aus, dass Sie es als Rest-Endpunkt darstellen, da Sie xml- und json-Anmerkungen haben). Wenn das der Fall ist, fügen Sie XmlTransient- und JsonIgnore-Anmerkungen in Ihrem getEmployee hinzu. – geneqew

Antwort

0
@OneToOne(fetch=FetchType.LAZY) 
@JoinColumn(name="id_employee") 
public Employee getEmployee() { 
    return employee; 
} 

Von der JPA 2.0-Spezifikation, die Standardeinstellungen sind wie folgt:

OneToMany: LAZY 
ManyToOne: EAGER 
ManyToMany: LAZY 
OneToOne: EAGER 
+0

Nein, lazy init exception – ChrisTheDestroyer

+0

Und das Laden explizit gibt mir Serialisierungsfehler. – ChrisTheDestroyer

+0

teilen Sie den Code geben faule Ausnahme der Initialisierung. Wenn Sie etwas wie object.employee() tun, wird getSomething() eine langsame Initialisierung verursachen, weil es jetzt langsam lädt. – Gokul

0

I gelöst es in der Zwischenzeit mit benutzerdefinierten Abfragen. So bekomme ich nur, was ich von den OneToOne-Entitäten benötige, und dann benutze ich den Setter der Haupteinheit, um diese Sammlungen zu setzen, ohne alles zu holen. Major reduziert auf keine Auswahl und Bandbreite.

Verwandte Themen