[Resolvido] OneToOne + SQL Server

Boa tarde a todos.
Tenho uma aplicação que faz consulta em uma base SQL Server, somente consulta.
E há um relacionamento 1 para 1, sendo que em alguns casos eu não tenho o registro na outra tabela.
Olhei em alguns outros tópicos e a maioria dizem para poder usar a opção “optional = false” que resolveria, mas fiz e não deu certo.
Neste caso ele deveria fazer a consulta usando um left join, como poderia forçar isso?

Classe CadastroCliFor

    @OneToOne(mappedBy = "cadastroCliFor", fetch=FetchType.LAZY, optional=false)
    private ClientesAtacado clientesAtacado;

Classe ClientesAtacado

    @OneToOne(optional = false, fetch=FetchType.LAZY)
    @JoinColumn(name = "CLIENTE_ATACADO", referencedColumnName = "NOME_CLIFOR", insertable = false, updatable = false, nullable=true)
    private CadastroCliFor cadastroCliFor;

Consulta SQL Gerada

select 
cadastrocl0_.CGC_CPF as col_0_0_, cadastrocl0_.NOME_CLIFOR as col_1_0_, cadastrocl0_.RAZAO_SOCIAL as col_2_0_, 
cadastrocl0_.RG_IE as col_3_0_, cadastrocl0_.ENDERECO as col_4_0_, cadastrocl0_.BAIRRO as col_5_0_, cadastrocl0_.CIDADE as col_6_0_, 
cadastrocl0_.UF as col_7_0_, cadastrocl0_.PAIS as col_8_0_, cadastrocl0_.CEP as col_9_0_, cadastrocl0_.DDD1 as col_10_0_, 
cadastrocl0_.TELEFONE1 as col_11_0_, cadastrocl0_.EMAIL as col_12_0_, cadastrocl0_.CADASTRAMENTO as col_13_0_, 
cadastrocl0_.COBRANCA_ENDERECO as col_14_0_, cadastrocl0_.COBRANCA_CIDADE as col_15_0_, cadastrocl0_.COBRANCA_BAIRRO as col_16_0_, 
cadastrocl0_.COBRANCA_UF as col_17_0_, cadastrocl0_.COBRANCA_CEP as col_18_0_, cadastrocl0_.COBRANCA_TELEFONE as col_19_0_, 
cadastrocl0_.COBRANCA_DDD as col_20_0_, cadastrocl0_.COBRANCA_PAIS as col_21_0_, cadastrocl0_.ENTREGA_ENDERECO as col_22_0_, 
cadastrocl0_.ENTREGA_CIDADE as col_23_0_, cadastrocl0_.ENTREGA_UF as col_24_0_, cadastrocl0_.ENTREGA_BAIRRO as col_25_0_, 
cadastrocl0_.ENTREGA_CEP as col_26_0_, cadastrocl0_.ENTREGA_TELEFONE as col_27_0_, cadastrocl0_.ENTREGA_DDD as col_28_0_, 
cadastrocl0_.ENTREGA_PAIS as col_29_0_, cadastrocl0_.PJ_PF as col_30_0_, cadastrocl0_.CADASTRAMENTO as col_31_0_, clientesat1_.TIPO as col_32_0_ 
from CADASTRO_CLI_FOR cadastrocl0_, CLIENTES_ATACADO clientesat1_ 
where cadastrocl0_.NOME_CLIFOR=clientesat1_.CLIENTE_ATACADO

Olá…
Use left join fetch no seu hql.

 "From CadastroCliFor clieFor left join fetch clieFor.clientesAtacado where clieFor.clientesAtacado.nome = :meuCliente"; 

[quote=lelodois]Olá…
Use left join fetch no seu hql.

 "From CadastroCliFor clieFor left join fetch clieFor.clientesAtacado where clieFor.clientesAtacado.nome = :meuCliente"; 

[/quote]

Lelo, vlw pela resposta.
No meu caso eu não vou passar um parametro na sql, ou seja, quero trazer toda a lista cadastrada, inicialmente eu retirei a condição do where, mas eu recebi o seguinte mensagem de erro:

org.hibernate.QueryException: query specified join fetching, but the owner of the fetched association was not present in the select list [FromElement{explicit,not a collection join,fetch join,fetch non-lazy properties,classAlias=null,role=null,tableName=CLIENTES_ATACADO,tableAlias=clientesat1_,origin=CADASTRO_CLI_FOR cadastrocl0_,colums={cadastrocl0_.NOME_CLIFOR ,className=br.com.acolari.entidades.ClientesAtacado}}][  SELECT clieFor.cgcCpf, clieFor.nomeClifor, clieFor.razaoSocial, clieFor.rgIe, clieFor.endereco, clieFor.bairro,  clieFor.cidade, clieFor.uf, clieFor.pais, clieFor.cep, clieFor.ddd1, clieFor.telefone1, clieFor.email, clieFor.cadastramento,  clieFor.cobrancaEndereco, clieFor.cobrancaCidade, clieFor.cobrancaBairro, clieFor.cobrancaUf,   clieFor.cobrancaCep, clieFor.cobrancaTelefone, clieFor.cobrancaDdd, clieFor.cobrancaPais,  clieFor.entregaEndereco, clieFor.entregaCidade, clieFor.entregaUf, clieFor.entregaBairro,  clieFor.entregaCep, clieFor.entregaTelefone, clieFor.entregaDdd, clieFor.entregaPais,  clieFor.pjPf, clieFor.cadastramento, clientesAtacado.tipo  FROM br.com.acolari.entidades.CadastroCliFor clieFor left join fetch clieFor.clientesAtacado ]

Não entendi muito bem o que esta mensagem esta me dizendo: O responsável pela associação não esta presente na consulta.

A hql que eu gerei esta da seguinte maneira:

SELECT clieFor.cgcCpf, clieFor.nomeClifor, clieFor.razaoSocial, clieFor.rgIe, clieFor.endereco, clieFor.bairro,
  clieFor.cidade, clieFor.uf, clieFor.pais, clieFor.cep, clieFor.ddd1, clieFor.telefone1, clieFor.email, clieFor.cadastramento,
  clieFor.cobrancaEndereco, clieFor.cobrancaCidade, clieFor.cobrancaBairro, clieFor.cobrancaUf, 
  clieFor.cobrancaCep, clieFor.cobrancaTelefone, clieFor.cobrancaDdd, clieFor.cobrancaPais,
  clieFor.entregaEndereco, clieFor.entregaCidade, clieFor.entregaUf, clieFor.entregaBairro,
  clieFor.entregaCep, clieFor.entregaTelefone, clieFor.entregaDdd, clieFor.entregaPais,
  clieFor.pjPf, clieFor.cadastramento, clientesAtacado.tipo
  FROM CadastroCliFor clieFor left join fetch clieFor.clientesAtacado

Bem só pra constar consegui resolver o problema da seguinte maneira:

Entidade CadastroCliFor

    @OneToOne(mappedBy = "cadastroCliFor", fetch=FetchType.LAZY, optional=true)
    private ClientesAtacado clientesAtacado;

Entidade ClientesAtacado

    @OneToOne(optional = true, fetch=FetchType.LAZY)
    @JoinColumn(name = "CLIENTE_ATACADO", referencedColumnName = "NOME_CLIFOR", insertable = false, updatable = false, nullable=true)
    private CadastroCliFor cadastroCliFor;

Sql (JPQL)

SELECT c.cgcCpf, c.nomeClifor, c.razaoSocial, c.rgIe, c.endereco, c.bairro,
	  c.cidade, c.uf, c.pais, c.cep, c.ddd1, c.telefone1, c.email, c.cadastramento,
	  c.cobrancaEndereco, c.cobrancaCidade, c.cobrancaBairro, c.cobrancaUf, "
	  c.cobrancaCep, c.cobrancaTelefone, c.cobrancaDdd, c.cobrancaPais,
	  c.entregaEndereco, c.entregaCidade, c.entregaUf, c.entregaBairro,
	  c.entregaCep, c.entregaTelefone, c.entregaDdd, c.entregaPais,
	  c.pjPf, c.cadastramento, a.tipo
FROM CadastroCliFor c 
LEFT JOIN c.clientesAtacado a

Obrigado a todos