JPA..duvida no uso de criteria Hibernate consigo fazer join com mais de um objeto ...?

Olá,

tenho uma tela onde vou ter a seguinte condição
list box onde terá um :

id que refere-se ao objeto usuário

ou

estado que refere-se a objeto endereço


campo condição valor 
id > 150 
ou 
estado = "SP" 
 

minha duvida como montar a query

se vier o codigo id preenchido faria assim 
SELECT distinct(user) FROM usuario user where user.id=6 
mas se vier o estado preenchido teria que usar assim : 
SELECT distinct(user) FROM usuario user JOIN user.endereco end where end.estado ="SP" 

e mais uma duvida na hora de passar essa variavel "estado" no jsp ela está como "est"
teria algum lugar que faria esse de para de "est" para estado como está no objeto ???

Ou existe uma forma que JPA faça isso direto ??? ou vou sempre que ter um if pra saber qual campo
foi preenchido pra tomar a decisão de montar a query ???

se alguém puder me ajudar agradeceria ???

abs