Lucas_Camara 13 de ago. de 2019
Nesse caso, precisa informar SELECT no início da JPQL.
alexandremcp1 14 de ago. de 2019
Boa noite Lucas,
Já fiz isso, jpa coloquei o SELECT, já fiz várias combinações com SELECT, SUM, etc… e nada funciona, dá sempre o mesmo erro.
Lucas_Camara 14 de ago. de 2019
Tente assim:
SELECT prod . id , SUM ( e . quantidade )
FROM Estoque e JOIN FETCH e . produtos prod
GROUP BY prod . id
alexandremcp1 14 de ago. de 2019
Deu um erro, só que agora enorme, vou postar aqui:
java . lang . IllegalArgumentException : org . hibernate . QueryException : query specified join fetching , but the owner of the fetched association was not present in the select list [ FromElement { explicit , not a collection join , fetch join , fetch non - lazy properties , classAlias = prod , role = br . com . pmro . coad . modelo . Estoque . produtos , tableName = Produto , tableAlias = produto2_ , origin = Estoque estoque0_ , columns = { estoque0_ . id , className = br . com . pmro . coad . modelo . Produto }} ] [ SELECT prod . id , SUM ( e . quantidade ) FROM br . com . pmro . coad . modelo . Estoque e JOIN FETCH e . produtos prod GROUP BY prod . id
Lucas_Camara 14 de ago. de 2019
A relação entre Estoque e Produto é unidirecional? Como está o mapeamento nas classes?
alexandremcp1 15 de ago. de 2019
Desculpe pela demora ao responder, mas tive problemas na minha máquina.
@Entity
public class Estoque implements Serializable {
//@ManyToMany(cascade = CascadeType.REFRESH, fetch = FetchType.LAZY)
@ ManyToMany
private List < Produto > produtos = new ArrayList < Produto > ();
public List < Produto > getProdutos () {
return produtos ;
}
=================
@Entity
public class Pedido implements Serializable {
private static final long serialVersionUID = 1 L ;
@Id
@GeneratedValue
private Integer id ;
@ManyToMany
private List < Departamento > departamentos = new ArrayList < Departamento > ();
public List < Departamento > getDepartamentos () {
if ( departamentos . size () > 1 ) {
departamentos . clear ();
}
return departamentos ;
}
@ManyToMany
private List < Setor > setores = new ArrayList < Setor > ();
public List < Setor > getSetores () {
if ( setores . size () > 1 ) {
setores . clear ();
}
return setores ;
}
@ManyToMany
private List < Usuario > usuarios = new ArrayList < Usuario > ();
public List < Usuario > getUsuarios () {
if ( usuarios . size () > 1 ) {
usuarios . clear ();
}
return usuarios ;
}
public Pedido () {
}
public Integer getId () {
return id ;
}
public void setId ( Integer id ) {
this . id = id ;
}
public void adicionaDepartamento ( Departamento departamento ) {
if ( departamentos . isEmpty ()) {
this . departamentos . add ( departamento );
}
departamentos . clear ();
this . departamentos . add ( departamento );
}
public void adicionaSetor ( Setor setor ) {
if ( setores . isEmpty ()) {
this . setores . add ( setor );
}
setores . clear ();
this . setores . add ( setor );
}
public void adicionaUsuario ( Usuario usuario ) {
if ( usuarios . isEmpty ()) {
this . usuarios . add ( usuario );
}
usuarios . clear ();
this . usuarios . add ( usuario );
}
public void removeDepartamento ( Departamento departamento ) {
this . departamentos . remove ( departamento );
}
public void removeSetor ( Setor setor ) {
this . setores . remove ( setor );
}
public void removeUsuario ( Usuario usuario ) {
this . usuarios . remove ( usuario );
}
}
Lucas_Camara 15 de ago. de 2019
Manda a classe produto tb.
alexandremcp1 15 de ago. de 2019
O GUJ barra as minhas mensagens toda hora dizendo que não posso enviar uma mensagem para mais de dois usuários, sendo que, sou novo sim, mas só estou enviando, ou tentando enviar, mensagem para uma única pessoa.