Relacionamento no Hibernate (Resolvido)

Bom dia,

Estou com a seguinte situação.
Tenho um relacionamento de muito para muito entre usuário e grupo de usuário.

Na classe de Grupo de Usuário tenho uma Collection de Usuário.
O mapeamento desse relacionamento no grupo de usuário está assim:

<set name="users" table="USERGROUP_USER"> <key column="USERGROUP_ID" /> <many-to-many column="USER_ID" class="business.user.User" /> </set>

Existe a possibilidade de inativar um usuário, no banco de dados é controlado pelo campo USER_ACTIVE na tabela de usuário (USER).

Eu quero que ao chamar o método getUsers() de Grupo de usuários seja retornado apenas os usuário ativo, ou seja, como o valor do campo USER_ACTIVE = 1 na tabela USER.

Alguem sabe o que tem que ser alterado para ter esse resultado esperado?

Obrigado desde já,

Rodrigo

seria interessante se vc nos mandasse seu codigo do metodo getUsers, mas de qq forma vc tera q criar um criteria novo nesse metodo com a condição where USER_ACTIVE = 1,

ou simplesmente construir uma query com o hql q contenha essa condição…

mas construa isso de forma elegante…usando criteria eh mais indicado…e separando em um metodo getActiveUsers ou passando esse parametro do where para o metodo…

O metodo getUsers() é apenas um metodo getter para propriedade users do tipo Collection

public Collection getUsers(){ return this.users; }

cara, seria interessante vc passar mais informações do seu codigo para não ficarmos no chute…

mas de qq forma, no mapeamento hbm.xml da sua classe User…vc pode fazer o seguinte:

<class name="business.user.User" table="USER" where="USER_ACTIVE = 1" >

mas dessa forma, vc nunca vai conseguir resgatar seus usuários inativos…

Consegui resolver.

Alterei o método que carrega o Grupo de Usuário.
Retirei o session.load(UserGroup.class, id) por um HQL:

[code]//Object obj = session.load(UserGroup.class, userGroup.getId());

session.createQuery("from UserGroup ug " +
"left join fetch ug.users u " +
"where ug.id = :userGroupId and u.active = 1");

query.setLong("userGroupId",userGroup.getId().longValue());

Object obj = query.uniqueResult();
[/code]

Obrigado.