Olá a todos,
Tenho que fazer uma HQL para me retornar um List de servidores que não estejam em um determinado Evento, estou me batendo aqui a algum tempo e não consegui fazer, na verdade nem manjo muito de HQL.
// Classes envolvidas.
class Servidor{
private Long id;
private List<Evento> eventos;
}
class Evento{
private Long id;
private List<Servidor> servidores;
}
Passando para a HQL o ID do Evento atual, tenho que fazer retornar um list dos servidores que não estejam relacionados com esse determinado Evento.
Agradeço qualquer ajuda.
Abraços.
Pessoal estou quebrando a cabeça aqui. Se alguem puder ajudar.
Session session = HibernateUtil.getSession();
String sql = "select ser from Servidor ser, Evento ev where " +
" ser not in (ev.servidores) and ev.id = 2";
try {
Query q = session.createQuery(sql);
List<Object> dados = q.list();
System.out.println("Servidores que nao estão no evento");
for (Object object : dados) {
Servidor e = (Servidor) object;
System.out.println(e.getMatricula());
}
} catch (Exception e) {
e.printStackTrace();
}
Está retornando erro de sintaxe de HQL.
01:43:33,197 WARN JDBCExceptionReporter:77 - SQL Error: -1, SQLState: 42X01
01:43:33,198 ERROR JDBCExceptionReporter:78 - Erro de sintaxe: Encountered "." at line 1, column 465.
org.hibernate.exception.SQLGrammarException: could not execute query
String sql =
"select s.nome from servidor s where s.id not in"
+"(select s.id from evento_servidor ev where " +
" ev.SERVIDORES_ID = s.id and ev.EVENTOS_ID = 2)";
try {
Query q = session.createSQLQuery(sql);
Object o = q.uniqueResult();
System.out.println(o.toString());
} catch (Exception e) {
e.getMessage();
}