Mapeamento ORM Hibernate

9 respostas
Andre_JavaWorld

Bom dia Pessoal!

Estou tendo uma duvida quanto ao mapeamento objeto relacional quando tenho um relacionamento, pore exemplo, minha classe Compromisso, possui uma Collection de Dias e horarios, eu nomeei um objeto de Datas e nele coloco os dias e horarios, mas como por exemplo criar um query, hql ou usando criteria, mais ou menos com esta finalidade:

“from COMPROMISSO.DATAS where data = 20/01/09”

isso foi so uma demonstracao do que eu quero fazer, por exemplo, quero poder fazer um select em um objeto que esta dentro de outro, por exemplo, compromisso tem uma data

Agradeço de Antemao!

André de Souza

9 Respostas

felipeguerra

Se vc orientar o framework de como quer que ele carregue seus mapeamentos, isso fica muito simples…não creio que seja necessário executar esse tipo de query, pois, com relacionamentos declarados nos seus POJOs, isso fica transparente.

Andre_JavaWorld

Obrigado pela resposta, voce poderia exemplificar melhor esta situacao? outra duvida que tenho é sobre a forma como estou mapeando, por exemplo, na minha classe Compromisso eu tenho uma collection de Dias, que foi uma classe que criei contendo uma data e uma hora, acha que esta é uma boa maneira de mapear este tipo de relacionamento? se puder me exemplificar melhor sua ideia, fico agradecido! e obrigado pela resposta

felipeguerra
Andre_JavaWorld:
Obrigado pela resposta, voce poderia exemplificar melhor esta situacao? outra duvida que tenho é sobre a forma como estou mapeando, por exemplo, na minha classe Compromisso eu tenho uma collection de Dias, que foi uma classe que criei contendo uma data e uma hora, acha que esta é uma boa maneira de mapear este tipo de relacionamento? se puder me exemplificar melhor sua ideia, fico agradecido! e obrigado pela resposta
@Entity
class Compromisso {

  List<Dia> dias;

  @ManyToMany(fetch=FetchType.LAZY //ou fetch=FetchType.EAGER)
  public List<Dia> getDias() {
     return dias;
  }

}

Usei as anotações da JPA...mas a idéia é essa, acho que o outro lado do relacionamento vc já sabe, certo?

Abraço

felipeguerra

Não sei se vc aceita sugestões, mas estuda a Criteria API.

Acho mais bacana que HQL.

Falou

Andre_JavaWorld

Ola Pessoal, obrigado pelas respostas! eu uso criteria tambem, vou explicar melhor minha duvida… este sistema é um sisteminha que estou fazendo para demostrar para uma empresa, é algo basico, é um agendador de compromissos feito usando Adobe Flex como Front Office (Aqui na França nos usamos este termo mais que Front End e achei legal, hehe) e Java como Back Office, e hibernate e Dao na persistencia, e tenho tambem um aplicativo Java me rodando em um celular, ele fica sempre monitorando as tabelas de compromisso no banco de dados, o que acontece… eu abro um socket no mobile conectando com o servidor e uma thread que fica verificando as datas e horas nas tabelas de minuto em minuto, ai o que acontece, eu preciso preciso fazer de minuto e minuto uma pesquisa no banco perguntando se existe alguma data e horario que correspondam a data e hora atual, se for o celular toca um som e mostra o compromisso, porem a grande duvida é: eu tenho um objeto Compromisso certo? este objeto possui a seguinte estrutura:

Compromisso —Tem–> Data —Tem—> Hora e Dia; (Compromisso tem Data que tem Hora e Dia);

porem como fazer isso via criteria, pois os campos que eu preciso pesquisar sao data e hora… se alguem puder postar o codigo em criteria ou mesmo em hql, sera de valiosa ajuda, eu ja trabalho com hibernate e jpa a muito tempo, mas so agora surgiu essa necessidade de se trabalhar com objetos dentro de objetos e ai a cobra fumou!

felipeguerra

Ex.:

from Compromisso c where c.datas = current_date()

http://www.hibernate.org/hib_docs/reference/en/html_single/#queryhql

Andre_JavaWorld

Humm, correto, mas o campo datas, nao é do tipo date, ele é uma classe que eu fiz contendo data e horario do compromisso, mas ja deu pra entender como fazer, muito obrigado a Todos!

felipeguerra

Ah é…então acessa a propriedade que desejar de ‘datas’ e compara…

Andre_JavaWorld

So uma ultima pergunta, voce sabe como fazer esse tipo de pesquisa usando Criteria? por exemplo, no addRestrictions eu posso colocar por exemplo: criteria.addRestrictions(“Compromisso.Dias.data”,new Date());

Criado 5 de dezembro de 2008
Ultima resposta 5 de dez. de 2008
Respostas 9
Participantes 2