2011-02-28 4 views

Répondre

0
select a from EntityMappedToTableA 
inner join fetch a.entityMappedToTableB b 
where b.fieldMappedOnColumnA like :someString 

Pour que cela fonctionne, vous devez avoir une relation (je suppose qu'il est un ManyToOne, car il semble y avoir plusieurs lignes dans le tableau A, qui ont l'ID de la table B) de EntityMappedToTableA à EntityMappedToTableB:

@Entity 
public class EntityMappedToTableA { 
    @ManyToOne 
    @JoinColumn(name = "Table_bID") 
    private EntityMappedToTableB entityMappedToTableB; 

    // ... 
} 
+0

Ma cartographie est '@JoinColumn (name = "VaterID", referencedColumnName = "VaterID") @ManyToOne de vaeter Vaeter privé;'. 'createQuery (" SELECT k FROM Kinder k INNER JOIN FETCH k.vaeter WHERE k.vaterName LIKE: vname ");' est la requête. En faisant cela, j'obtiens une exception où "état inconnu ou champ d'association [vaterName] de la classe [kms3.entities.Kinder]." Comme je le vois, j'essaie de lire "vaterName" dans l'entité "Kinder" au lieu de l'entité "Vaeter". L'erreur est-elle dans la requête ou le mappage? –

+0

C'est une erreur dans la requête. J'ai mal lu votre requête SQL et fait une erreur dans la traduction. Je vais réparer ma réponse. –

+0

Merci pour la réponse rapide, mais cela ne fonctionne toujours pas. J'ai essayé de suivre: "SELECT k FROM Kinder k INNER JOIN FETCH k.vaeter vat WHERE vat.vaterName LIKE: vname", mais je reçois une exception sur le "token inconnu". Sans l'alias "vat" il ne peut pas trouver vaterName. J'ai une faille majeure dans ma compréhension de cette entreprise. –