Galera depois de muito tempo de tentativas encontrei uma forma de fazer o Join funcionar usando Annotation.
As Classes ficaram da seguinte forma.
Cliente
package br.com.adv.modelo;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
@Entity
public class Cliente {
@Id @GeneratedValue
private Long id;
private String nome;
@JoinColumn
@ManyToOne
private Cep cep;
private String pessoa;
private String cgc;
private String rg;
private String fone;
private String fax;
private String email;
private String replegal;
private String grupo;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public Cep getCep() {
return cep;
}
public void setCep(Cep cep) {
this.cep = cep;
}
public String getPessoa() {
return pessoa;
}
public void setPessoa(String pessoa) {
this.pessoa = pessoa;
}
public String getCgc() {
return cgc;
}
public void setCgc(String cgc) {
this.cgc = cgc;
}
public String getRg() {
return rg;
}
public void setRg(String rg) {
this.rg = rg;
}
public String getFone() {
return fone;
}
public void setFone(String fone) {
this.fone = fone;
}
public String getFax() {
return fax;
}
public void setFax(String fax) {
this.fax = fax;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getReplegal() {
return replegal;
}
public void setReplegal(String replegal) {
this.replegal = replegal;
}
public String getGrupo() {
return grupo;
}
public void setGrupo(String grupo) {
this.grupo = grupo;
}
}
Cep
[code]package br.com.adv.modelo;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
@Entity
public class Cep {
@Id
@JoinColumn
private String cep;
private String endereco;
private String bairro;
private String cidade;
private String uf;
public String getCep() {
return cep;
}
public void setCep(String cep) {
this.cep = cep;
}
public String getEndereco() {
return endereco;
}
public void setEndereco(String endereco) {
this.endereco = endereco;
}
public String getBairro() {
return bairro;
}
public void setBairro(String bairro) {
this.bairro = bairro;
}
public String getCidade() {
return cidade;
}
public void setCidade(String cidade) {
this.cidade = cidade;
}
public String getUf() {
return uf;
}
public void setUf(String uf) {
this.uf = uf;
}
}
[/code]
Criteria utilizado
session.createCriteria(Cliente.class)
.setFetchMode("cep", FetchMode.JOIN)
.list()
Resultado do hibernate:
Hibernate:
select
this_.id as id0_1_,
this_.cep_cep as cep11_0_1_,
this_.cgc as cgc0_1_,
this_.email as email0_1_,
this_.fax as fax0_1_,
this_.fone as fone0_1_,
this_.grupo as grupo0_1_,
this_.nome as nome0_1_,
this_.pessoa as pessoa0_1_,
this_.replegal as replegal0_1_,
this_.rg as rg0_1_,
cep2_.cep as cep1_0_,
cep2_.bairro as bairro1_0_,
cep2_.cidade as cidade1_0_,
cep2_.endereco as endereco1_0_,
cep2_.uf as uf1_0_
from
Cliente this_
left outer join
Cep cep2_
on this_.cep_cep=cep2_.cep
[br.com.adv.modelo.Cliente@b7c0a73]
Espero que isso ajude aos que tiveram problema igual ou parecido.