JPA + Consulta específica em uma relação em uma Entity

2 respostas
rogerio.alcantara

Boa tarde galera, tudo bom?

Eu preciso de uma funcionalidade que eu não sei se existe e não sei se dá para fazer. rsrsrs...

Seguinte, no meu sistema eu tenho um cenário semelhante ao twitter: eu adiciono pessoas como contatos. E outras pessoas me adicionam como contatos.

Ou seja:
@Entity
class Employee {

@ManyToMany
List<Employee> contacts;

(..)

}
E preciso recuperar o inverso, ou seja, "quem me tem como contato" (seria o quem me segue do twitter). A consulta para recuperar isso dentro de um EmployeeDAO da vida seria:
return this.getSession().createQuery("Select e from Employee e left join e.contacts c WHERE c = :contact")
								.setEntity("contact", employee)
								.list();
Eu gostaria de saber, se há alguma maneira de anotar alguma lista "readonly" na minha entidade Employee para fazer essa consulta. Algo assim:
class Employee {

@ManyToMany
List<Employee> contacts;

@Transient
@Query("Select e from Employee e left join e.contacts c WHERE c = this")
List<Employee> meTemComoContact;

}
ou assim:
class Employee {

@ManyToMany
List<Employee> contacts;

@Transient
@ManyToMany(mappedBy="contacts")
List<Employee> meTemComoContact;

}
É possível? Existe isso ou algo parecido na JPA/Hibernate?

Ficou muito confuso?

Agradeço antecipadamente e fico no aguardo,

2 Respostas

eliangela

vc quer que a sua lista não seja serializada?

use o modificador transient no seu atributo:

private transient List lista;

Espero ter ajudado

rogerio.alcantara

Olá @eliangela, muito obrigado pelo retorno.

Poutz! Acho que não fui claro no meu post! rsrsrs..

Eu tenho a seguinte modelagem:
@Entity  
class Employee {  
  
@ManyToMany  
List<Employee> contacts;  
  
(..)  
  
}
Essa modelagem represento 2 coisas:

1 - Contacts : quem o Employee adicionou como contato; e
2 - Connections: quem adicionou o Employee como contato.

A lista Contacts do Employee é essa que está mapeada. O q eu quero saber se é possível que a entidade Employee retorne a lista de Connections;

Sera que consegui ser claro ou enrolei mais ainda! oO'

hauhauha!!!

Mesmo assim, muito obrigado pela atenção!

;D

Criado 18 de julho de 2011
Ultima resposta 18 de jul. de 2011
Respostas 2
Participantes 2