Tenho a entidade Usuario com relacionamento @OneToOne com NumeroSerie
A entidade que manda é Usuario. Em NumeroSerie só esta com @OneToOne(mappedBy = “numeroSerie”) - que é o atributo em Usuario.
Em Usuario, tenho
@OneToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "IDNUMEROSERIE")
private NumeroSerie numeroSerie;
Acontecerá uma situação onde os usuários cadastrados terão ou não numero de série.
Quando realizo um criteria em Usuario para trazer todos, o select montado é:
select
this_.id as id0_1_,
this_.cpf as cpf0_1_,
this_.login as login0_1_,
this_.nome as nome0_1_,
this_.IDNUMEROSERIE as IDNUMERO6_0_1_,
this_.senha as senha0_1_,
numeroseri2_.id as id1_0_,
numeroseri2_.numeroSerie as numeroSe2_1_0_
from
Usuario this_
left outer join
NumeroSerie numeroseri2_
on this_.IDNUMEROSERIE=numeroseri2_.id
Quando tento ordenar pela coluna String do numero de série ele faz um inner join:
select
this_.id as id0_1_,
this_.cpf as cpf0_1_,
this_.login as login0_1_,
this_.nome as nome0_1_,
this_.IDNUMEROSERIE as IDNUMERO6_0_1_,
this_.senha as senha0_1_,
numeroseri1_.id as id1_0_,
numeroseri1_.numeroSerie as numeroSe2_1_0_
from
Usuario this_
inner join
NumeroSerie numeroseri1_
on this_.IDNUMEROSERIE=numeroseri1_.id
order by
numeroseri1_.numeroSerie asc
Eu sei que utilizando criteria posso forçar utilizando o CriteriaSpecification
Mas não posso alterar isso no meu componente (impacta em pontos em todo o sistema)!
Existe um meio de realizar isso através de annotations?