hibernate ManyToOne perché 2 domande sono generati invece di uno?
-
27-09-2019 - |
Domanda
MyTable è un tavolo nel mio DB Oracle, ha una CMP_ID di aderire alla tabella Società.
Ecco l'implementazione Java:
public class MyTable implements Serializable {
...
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumns( { @JoinColumn(name = "CMP_ID", referencedColumnName = "CMP_ID", nullable = false) })
@XmlTransient
Company company;
...
}
Nella mia pagina JSP, sono riuscito a visualizzare il MyTable:
${MyTable.company.cmpName}
Ma Hibernate generato 2 seleziona: uno per il MyObject, e un altro per fecth nome della società.
Come prelevo tutte le informazioni che voglio in una sola query utilizzando Hibernate? (Tutti i campi di MyTable, più il nome della società nella tabella Società)
grazie
Soluzione
Se non si desidera utilizzare una query personalizzata, impostare la strategia di recupero come EAGER
@ManyToOne(fetch=FetchType.EAGER)
@JoinColumn(name="CMP_ID", referencedColumnName="CMP_ID", nullable=false)
private Company company;
Solo un consiglio: preferiscono utilizzare @JoinColumns se si dispone di più di un @JoinColumn. In caso contrario, utilizzare solo @JoinColumn. tenere a mente query HQL sovrascrive strategia predefinita recupero.
Altri suggerimenti
Questo è il modo in cui le opere di ibernazione. Vedere http://www.javalobby.org/articles/hibernate-query-101/ per maggiori informazioni.