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

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top