Boa noite! estou tentando fazer uma consulta com jpa, pórem está dando um erro que não consigo resolver. Já procurei uma solução no google e no fórum e não achei. Segue:
[code]
public class LoginDaoImpl extends GenericaDaoImpl implements LoginDao {
@Override
public List<Login> listaLo() {
List<Login> logins = new ArrayList<Login>();
Query query = em.createQuery("select new modelo.PesquisaAutenticacao(l.usuario, c) from Login l inner join fetch l.clientes c where id = 1");
List<PesquisaAutenticacao> resultados = query.getResultList();
for(PesquisaAutenticacao result : resultados){
System.out.println(result.getUsuario());
}
return resultados;
}
}[/code]
public class PesquisaAutenticacao {
private String usuario;
private List<Cliente> clientes;
public PesquisaAutenticacao(String usuario, List<Cliente> clientes) {
super();
this.usuario = usuario;
this.clientes = clientes;
}
/*getters e setters*/
}
@Entity
public class Login implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Integer id;
private String usuario;
private String senha;
@OneToOne
private Funcionario funcionario;
@ManyToMany(cascade={CascadeType.PERSIST,CascadeType.MERGE},targetEntity=Cliente.class)
@JoinTable(name="log_cli", joinColumns=@JoinColumn(name="id_login"),inverseJoinColumns=@JoinColumn(name="id_cliente") )
public List<Cliente> clientes;
/*getters e setters*/
}
@Entity
public class Cliente implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Integer id;
@Column(length = 255)
private String nome;
@Column(length = 255)
private String razaoSocial;
@Column(length = 14)
private String cnpj;
@Column(length = 11)
private String cpf;
@ManyToMany(cascade={CascadeType.PERSIST,CascadeType.MERGE},mappedBy="clientes",targetEntity=Login.class)
public List<Login> logins;
/*getters e setters*/
}
Exception in thread "main" java.lang.IllegalArgumentException: org.hibernate.hql.ast.QuerySyntaxException: Unable to locate appropriate constructor on class [modelo.PesquisaAutenticacao] [select new modelo.PesquisaAutenticacao(l.usuario, c) from br.com.isis.doc.dominio.Login l inner join fetch l.clientes c where id = 1]
at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1202)
at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1148)
at org.hibernate.ejb.AbstractEntityManagerImpl.createQuery(AbstractEntityManagerImpl.java:275)
at br.com.isis.doc.dao.hibernate.LoginDaoImpl.listaLo(LoginDaoImpl.java:20)
at test.Main.main(Main.java:20)
Caused by: org.hibernate.hql.ast.QuerySyntaxException: Unable to locate appropriate constructor on class [modelo.PesquisaAutenticacao] [select new modelo.PesquisaAutenticacao(l.usuario, c) from br.com.isis.doc.dominio.Login l inner join fetch l.clientes c where id = 1]
at org.hibernate.hql.ast.QuerySyntaxException.convert(QuerySyntaxException.java:54)
at org.hibernate.hql.ast.QuerySyntaxException.convert(QuerySyntaxException.java:47)
at org.hibernate.hql.ast.ErrorCounter.throwQueryException(ErrorCounter.java:82)
at org.hibernate.hql.ast.QueryTranslatorImpl.analyze(QueryTranslatorImpl.java:261)
at org.hibernate.hql.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:185)
at org.hibernate.hql.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:136)
at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:101)
at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:80)
at org.hibernate.engine.query.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:124)
at org.hibernate.impl.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:156)
at org.hibernate.impl.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:135)
at org.hibernate.impl.SessionImpl.createQuery(SessionImpl.java:1770)
at org.hibernate.ejb.AbstractEntityManagerImpl.createQuery(AbstractEntityManagerImpl.java:272)
... 2 more
Deste já agradeço se alguém me ajudar.