Tenho 3 tabelas que “contam” para o tópico (acredito eu), existe uma tabela Agenda que liga-se a tabela Maquina, que por sua vez liga-se a tabela Criticidade. Criei no SQL Editor do Postgre e funcionou, mas, ao jogar no create Query da minha DAO… só erro…
SELECT * FROM
public.agenda,
public.maquina maq
WHERE
agenda.maq_cod = maq.maq_cod AND
maq.cri_cod=3 and age_dia = ( SELECT max(age_dia) FROM agenda )
Rodando no BD, ele funciona… Mas não estou conseguindo levar a ideia do Create Query, tentei assim:
public List<Agenda> busca_ultima_agenda_critica() {
Query q = session. createQuery("FROM Agenda age, Maquina maq WHERE \n" +
" age.maq_cod = maq.maq_cod AND maq.cri_cod=3 AND age_dia = ( SELECT max(age_dia) FROM age) ");
return q.list();
}
o retorno é
could not resolve property: maq_cod of: model.Agenda [FROM model.Agenda age, model.Maquina maq WHERE
age.maq_cod = maq.maq_cod AND maq.cri_cod=3 AND age_dia = ( SELECT max(age_dia) FROM age) ]
Segue Models:
@Entity
@SequenceGenerator(name = "seq_Maq",
sequenceName = "seq_Maq",
allocationSize = 1)
public class Maquina {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE,
generator = "seq_Maq")
private int maq_cod;
private String maq_desc;
private Boolean maq_sucata;
private String maq_patrimonio;
private Date maq_data_sucata;
private String maq_num_serie;
@JoinColumn(name = "set_cod", referencedColumnName = "set_cod")
@ManyToOne(optional = false)
private Setor setor;
@JoinColumn(name = "cri_cod", referencedColumnName = "cri_cod")
@ManyToOne(optional = false)
private Criticidade criticidade;
generators
@Entity
@SequenceGenerator(name = "seq_age_maq",
sequenceName = "seq_age_maq",
allocationSize = 1)
public class Agenda {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "seq_age_maq")
private int age_cod;
@Temporal(TemporalType.DATE)
private Date age_dia;
@JoinColumn(name = "maq_cod", referencedColumnName = "maq_cod")
@ManyToOne(optional = false)
private Maquina maquina;
@JoinColumn(name = "sta_cod", referencedColumnName = "sta_cod")
@ManyToOne(optional = false)
private Status status;