Galera, eu tenho um problema com uma consulta numa relação n-n como segue:
usuario usuarioMenu menu
--------- ---------------- ---------
- idUsuario - chaveComposta - idMenu
- data
tenho as três classes acima @Entity mais uma quarta classe UsuarioMenuPK @Embeddable para mapear a chaveComposta idUsuario e idMenu. Eu peguei o exemplo de uma apostila do Hibernate anotations.
minhas classes:
@Entity
public class Usuario {
@Id
@GeneratedValue
private long id;
@Entity
public class Menu {
@Id
@GeneratedValue
private long id;
[code]@Entity
public class MenuUsuario {
@EmbeddedId
private MenuUsuarioPK chaveComposta;
private Boolean permisao;[/code]
[code]@Embeddable
public class MenuUsuarioPK implements Serializable {
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name="idUsuario")
private Usuario usuario;
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "idMenu")
private Menu menu;[/code]
Para gravar sem problemas, funcionou todo ok, mas não consigo fazer uma consulta filtrando apenas por idUsuario independiente do idMenu
public List<MenuUsuario> listaPorUsuario(Usuario u) {
MenuUsuarioPK mupk = new MenuUsuarioPK();
mupk.setUsuario(u);
mupk.setMenu("??");
Criteria crit = getSession().createCriteria(MenuUsuario.class);
crit.add(Restrictions.eq("chaveComposta", u));
return crit.list();
}
Na linha 04 se eu não setar um menu, o resultado e zero.
Alguém sabe como resolver esse tipo de consulta com chave composta ??? Obrigado !!