Ich habe Probleme mit Join mit QUeryDSL. Ich versuche, eine Liste von "Clube" zu erhalten, die eine ManyToOne-Beziehung mit "Federacao" hat.Fehler beim Verbinden einer Relation ManyToOne. Verwenden von QueryDSL
Kann mir jemand helfen?
Danke.
Die Beziehung ist zwischen den folgenden Klassen.
@Entity
@Table(name = "federacoes")
@SequenceGenerator(name = "idgen", sequenceName = "federacoes_id_federacao_seq", allocationSize = 1)
@AttributeOverride(name = "id", column = @Column(name = "id_federacao"))
public class Federacao extends AbstractEntity{
private String sigla;
private String uf;
private String nome;
...
}
@Entity
@Table(name = "clubes")
@SequenceGenerator(name = "idgen", sequenceName = "clubes_id_clube_seq", allocationSize = 1)
@AttributeOverride(name = "id", column = @Column(name = "id_clube"))
public class Clube extends AbstractEntity{
private Federacao federacao;
...
@ManyToOne
@JoinColumn(name = "id_federacao")
@Column(name = "federacao")
public Federacao getFederacao() {
return federacao;
}
...
}
Ich verwende QueryDSL und im Repository-Klasse, die QueryDslRepositorySupport erstreckt ich tue dies:
...
@PersistenceContext
private EntityManager em;
private static final QClube qClube = QClube.clube;
private static final QFederacao qFederacao = QFederacao.federacao;
@Override
public List<Clube> findAll(FilterClubeDTO filterClubeDTO) {
JPAQuery query = new JPAQuery(em);
return query.from(qClube)
.innerJoin(qFederacao).on(qClube.federacao.eq(qFederacao))
.orderBy(qClube.id.desc())
.list(qClube);
}
Ich erhalte diese Ausnahme:
2016-04-12 12:32:38.485 ERROR 2853 --- [ qtp36627152-15] o.h.hql.internal.ast.ErrorCounter : Path expected for join!
org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.springframework.dao.InvalidDataAccessApiUsageException: org.hibernate.hql.internal.ast.QuerySyntaxException: Path expected for join! [select clube
from br.com.cbfm.core.models.Clube clube
inner join Federacao federacao with clube.federacao = federacao
order by clube.id desc]; nested exception is java.lang.IllegalArgumentException: org.hibernate.hql.internal.ast.QuerySyntaxException: Path expected for join! [select clube
from br.com.cbfm.core.models.Clube clube
inner join Federacao federacao with clube.federacao = federacao
order by clube.id desc]
Versuchen mit Entfernen der '@ Column' Anmerkung aus: ' @ManyToOne @JoinColumn (name = "id_federacao") @Column (name = "Federacao") öffentlichen Federacao getFederacao() { return Federacao; } ' Und halten Sie es wie folgt aus: ' @ManyToOne @JoinColumn (name = "id_federacao") öffentlichen Federacao getFederacao() { return Federacao; } ' –