[RESOLVIDO]Setar um um objeno na entidade a partir de combobox

Pessoal, boa tarde!

Minha situação é a seguinte, vou desenvolver um sistema com extJS, vraptor e JPA. To desenvolvendo um form smiples para ir me acostumando com as tencologias e aumentando a complexidade aos poucos. Minha dúvida é a seguinte: eu tenho um formulário para cadastro de pessoas que é uma entidade JPA do meu sistema. Tenho um combobox preenchido direto do banco com profissões que é outra entidade. Pessoa, se liga com profissão atráves de um relacionamento @ManyToOne. Ate ai tudo lindo. O problema é qua quandp eu escolho a profissão no combo, o máximo que eu posso pegar é um atributo da profissão, no caso o nome e não da pra setar isso no atributo Profissão da pessoa, pq o método set espera um objeto. Como posso resolver isso? Seguem abaixo os arquivos:

form.js

Ext.onReady(function() {

	/*-----------Objetos que compõem o formulário--------------------*/

	var campoNome = {
		xtype : 'textfield',
		fieldLabel : 'Nome',
		name : 'pessoa.nome',
		allowBlank : false

	};

	var campoIdade = {
		xtype : 'textfield',
		fieldLabel : 'Idade',
		name : 'pessoa.idade'

	};

	var campoData = {
		xtype : 'datefield',
		fieldLabel : 'Data de Nascimento',
		name : 'pessoa.dataNascimento'

	};

	var campoEndereco = {
		xtype : 'textfield',
		fieldLabel : 'Endereço',
		name : 'pessoa.endereco'

	};

	var campoTelefone = {
		xtype : 'textfield',
		fieldLabel : 'Telefone',
		name : 'pessoa.telefone',
		vtype : 'alphanum'

	};

	var radioGroupSexo = {
		xtype : 'radiogroup',
		columns : 1,
		fieldLabel : 'Sexo',
		name : 'pessoa.sexo',
		items : [{
					name : 'pessoa.sexo',
					boxLabel : 'Masculino',
					inputValue : 'MASCULINO'
				}, {
					name : 'pessoa.sexo',
					boxLabel : 'Feminino',
					inputValue : 'FEMININO'
				}

		]

	};

	/*
	 * Variável responsável por carregar os dados do Banco para preencher o
	 * ComboBox de profissões.
	 */
	var profissoesStore = new Ext.data.Store({
				reader : new Ext.data.JsonReader({
							fields : ['id', 'nome'],
							root : 'list'
						}),
				proxy : new Ext.data.HttpProxy({
							url : '/vraptorextjs/pessoas/json/listaProfissoes.json'
						}),
				autoLoad : true
			});

	var comboProfissao = {
		xtype : 'combo',
		hiddenName : 'pessoa.profissao',
		fieldLabel : 'Profissão',
		mode : 'local',
		store : profissoesStore,
		displayField : 'nome',
		valueField : 'id',
		width : 120
	};

	var editorDescricao = {
		xtype : 'htmleditor',
		fieldLabel : 'Fale Sobre você',
		name : 'pessoa.faleSobreVoce',
		hiddeLabel : true,
		height : 100,
		achor : '100%'
	};

	/*-------------Botões do Formulário-------------------------*/

	var botaoSalvar = {
		text : 'Salvar',
		handler : function() {
			form.getForm().submit();
		}
	};

	/*---------------Variável que monta o formulário------------*/
	var form = new Ext.FormPanel({

				url : '/vraptorextjs/pessoas',
				renderTo : Ext.getBody(),
				frame : true,
				title : 'Cadastro de Funcionário',
				width : 600,
				items : [campoNome, campoIdade, campoData, campoEndereco,
						campoTelefone, radioGroupSexo, comboProfissao,
						editorDescricao],
				buttons : [botaoSalvar]
			});

});

Pessoa

[code]
package br.com.lds.vraptor.entity;

import java.util.Date;

import javax.persistence.Entity;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;

import br.com.lds.vraptor.enums.Sexo;

@Entity
public class Pessoa {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String nome;
private Date dataNascimento;
private String endereco;
private String telefone;
@Enumerated(EnumType.STRING)
private Sexo sexo;
private String hobby;
@ManyToOne
@JoinColumn(name = "profissao_id")
private Profissao profissao;
private String faleSobreVoce;

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 Date getDataNascimento() {
	return dataNascimento;
}

public void setDataNascimento(Date dataNascimento) {
	this.dataNascimento = dataNascimento;
}

public String getEndereco() {
	return endereco;
}

public void setEndereco(String endereco) {
	this.endereco = endereco;
}

public String getTelefone() {
	return telefone;
}

public void setTelefone(String telefone) {
	this.telefone = telefone;
}

public Sexo getSexo() {
	return sexo;
}

public void setSexo(Sexo sexo) {
	this.sexo = sexo;
}

public String getHobby() {
	return hobby;
}

public void setHobby(String hobby) {
	this.hobby = hobby;
}

public Profissao getProfissao() {
	return profissao;
}

public void setProfissao(Profissao profissao) {
	this.profissao = profissao;
}

public String getFaleSobreVoce() {
	return faleSobreVoce;
}

public void setFaleSobreVoce(String faleSobreVoce) {
	this.faleSobreVoce = faleSobreVoce;
}

}[/code]

Profissao

[code]
package br.com.lds.vraptor.entity;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;

@Entity
public class Profissao {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String nome;
private Double salario;
private Integer cargaHoraria;

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 Double getSalario() {
	return salario;
}

public void setSalario(Double salario) {
	this.salario = salario;
}

public Integer getCargaHoraria() {
	return cargaHoraria;
}

public void setCargaHoraria(Integer cargaHoraria) {
	this.cargaHoraria = cargaHoraria;
}

}[/code]

Resolvi meu problema, foi só implementar um converter.

Você pode também alterar a propriedade de pessoa.profissao para pessoa.profissao.id. Assim não precisa converter.

Excelente, acabei de testar aqui e deu o mesmo resultado. Uma saída bem mais simples. Obrigado =D