Pessoal, tenho as classes abaixo…
@Entity
@Table(name = "Usuarios")
public class Usuario implements Serializable {
@Id
@Column(name = "id_usuario", nullable = false)
@GeneratedValue(strategy = GenerationType.AUTO)
private Integer id_usuario;
@ManyToOne(fetch=FetchType.EAGER)
@JoinColumn(name = "id_Empresa")
private Empresa empresa;
}
@Entity
@Table(name = "Empresa")
public class Empresa implements Serializable{
@Id @Column(name = "id_Empresa", nullable = false)
private Integer id_Empresa;
@Column(name = "nome", nullable = true)
private String nome;
@OneToMany(mappedBy="empresa", fetch=FetchType.LAZY)
@JoinColumn(name="id_Empresa")
private Collection<Usuario> lstUsuarios;
}
E tenho o seguinte método no DAO utilizando Criteria…
public List<T> findByTeste(final T example) {
Criteria criteria = getSession().createCriteria(example.getClass());
criteria.add(Example.create(example));
final List<T> result = criteria.list();
return result;
}
Criei minha estrutura no BD, colocando o campo id_empresa na tabela Usuario… e depois fiz um INSERT na tabela empresa na tabela usuario, ou seja, inserir registros na mao mesmo no BD… Apos isso, tentei filtrar os usuarios pela empresa utilizando o hibernate… O que acontece é que toda vez o hibernate gera um SQL cujo where é 1=1… ou seja, retorna todos os usuarios…
Nao consigo fazer com que, setando a empresa no objeto usuario, ele retorne somente os usuarios daquela empresa…
alguem tem alguma sugestao ??
Obrigado…


