Acessando objetos de objetos com Criteria e HQL

Amigos,

Gostaria de saber se eu posso acessar normalmente objetos de objetos por criteria ou HQL.
Por exemplo, eu posso fazer isso?

 pessoa.endereco.uf = :uf 

isso é permitido? Se sim, eu posso colocar quantos objetos eu quiser? Tipo, 10 objetos um dentro do outro, por exemplo? Ou há algum limite?

ja usei e funciona normalmente só que não foi com muitos pois no meu caso não tinha necessidade. para cada relacionamento confira os fetch

Mas essa comparação é a nivel de ID ou a Nivel de Objeto?

Por exemplo…

pessoa.endereco.uf = :uf 

esse atributo uf de endereco pode ser um objeto ou tem que ser um ID? ou tanto faz?

obrigado.

qual uf vc esta falando da :uf ou xxxx.uf? se for da primeira vc seta o codigo ou um id se for a segunda tanto faz da tbm pra setar atributos e objetos tando hql ou criteria