Olá pessoal,
Estou com um problema ao criar uma query no hibernate.
Eu possuo um objeto Transaction que contém um relacionamento de many-to-one com o objeto User.
Eu preciso escrever uma consulta na minha DAO para buscar as Tansactions por id, mas gostaria de colocar uma verificação adicional para comparar o user também. Ou seja, o findById só retornará se houver um registro com o Id informado e se ele também for do usuário que está pedindo o find.
Daí eu fiz a seguinte query:
Criteria crit = this.getSession().CreateCriteria(Transaction.class);
crit.add(Restriction.idEq(pkObject))
crit.add(Restriction.eq("user", userObject))
List result = crit.list();
O problema com a query acima é que ela está retornado 2 vezes a mesma Tansaction. E eu só tenho 1 no banco de dados atualmente. Ele está devolvendo a Transaction com o id 1 duas vezes.
Eu estou me perguntando se o problema está em eu usar a propriedade user na query. Será que eu deveria fazer especificando um join entre estes objetos, usando o fetch mode, etc?
Eu reescrevi a query acima usando uma named query assim e ela funcionou corretamente:
from Transaction t
where t.id = :id
and t.user = :user
Mas eu gostaria de tentar fazer o criteria funcionar.
Alguém pode me ajudar?
Obrigado.