Hibernate + vRaptor + ManyToMany

Boa noite pessoal,

Estou terminando um TCC, e esta faltando uma parte de relacionamento que estou com duvida e preciso da luz… rsrs

Preciso criar uma lista de preço de procedimentos baseando nos convenios. Para isso, é necessario relacionamento de muitos para muitos. Afinal posso ter varios preços para cada procedimento.

Procedimento:

@Entity
public class Procedimento {
	@Id @GeneratedValue
	private int id;
	private String nome;
	private String especialidade;
	private double valor;
	private String descricao;

Convenio:

@Entity
public class Convenio {
	@Id @GeneratedValue
	private int id;
	
	public String nomeFantasia;
	public String razaoSocial;
	public String CNPJ;
	public String site;
	public String telefone;
	
	public String nomeRepresentante;
	public String emailRepresentante;
	public String telefoneRepresentante;
	
	private String endereco;
	private String numero;
	private String CEP;
	private String cidade;
	private String estado;
	private String bairro;
	
	
	private String numeroContrato;
	
	private String observacao;

Pensei em criar uma tabela com o mapeamento manual, pois não consegui utilizar @ManyToMany:

@Entity
public class ProcedimentoConvenio {

	@Id @GeneratedValue
	private int id;
	
	@OneToOne
	private Procedimento procedimento;
	
	@OneToOne
	private Convenio convenio;
	
	private double valor;

Acabei me atrapalhando no uso do vRaptor com esta tabela, não sabendo como salvar, se pego a lista no submit.

Estou sem saber o que fazer, com 3 dias para entrega-lo.
Quem puder da um Help.

Dê um nome mais significativo pra essa tabela do meio – tipo Guia ou coisa do tipo.

os relacionamentos dessa classe devem ser @ManyToOne, e não @OneToOne.

troque o private int id das classes por private Integer id ou private Long id, pq o valor padrão de int é 0, e dá pau qdo vc tenta salvar.

o que exatamente acontece qdo vc tenta salvar? qual é o erro?

[quote=Lucas Cavalcanti]Dê um nome mais significativo pra essa tabela do meio – tipo Guia ou coisa do tipo.

os relacionamentos dessa classe devem ser @ManyToOne, e não @OneToOne.

troque o private int id das classes por private Integer id ou private Long id, pq o valor padrão de int é 0, e dá pau qdo vc tenta salvar.

o que exatamente acontece qdo vc tenta salvar? qual é o erro?[/quote]

Lucas, neste momento, nao consigo pegar um json retornado pelo vRaptor.

{“procedimento”: {
“id”: 1,
“nome”: “Teste1”,
“especialidade”: “Cirurgia”,
“valor”: 0.0,
“descricao”: “”
}}{“list”: [
{
“id”: 8,
“valor”: 1.0,
“convenio”: {
“id”: 1,
“nomeFantasia”: “Convenio1”
}
},
{
“id”: 9,
“valor”: 2.0,
“convenio”: {
“id”: 2,
“nomeFantasia”: “Convenio2”
}
}
]}

json.procedimento nao me retorna nada…

se depois de configurada as classes vc ainda está em dúvida como fazer as tabela, vai aí uma dica q é oq faço: eu gero as tabelas automaticamente com o seguinte procedimento:

        Configuration conf = new AnnotationConfiguration();
        conf.configure();
        SchemaExport se = new SchemaExport(conf);
        se.create(true, true);

O bom mesmo é q poupa tempo pra caramba de vc não ter q ficar criando um monte de tabela
Mas atenção: esse procedimento irá apagar os dados das tabelas!!!

fmgasparino como está o código do controller? o json está como se vc serializou dois objetos um depois do outro

Eu estou precisando dos dois objetos, e fiz um depois do outro.

public void editaProcedimento(Procedimento procedimento) {
		Procedimento procedimentoProcurado = procedimentoDao
				.buscaPorId(procedimento);
		result.use(json()).from(procedimentoProcurado).serialize();
		List<ProcedimentoConvenio> precosConvenios = procedimentoDao
				.consultaPrecos(procedimentoProcurado);
		result.use(json()).from(precosConvenios).include("convenio")
				.serialize();
	}

isso não vai funcionar, pois não vai gerar um json válido.

ou cria uma classe que tem essas duas coisas como atributo, ou serializa Arrays.asList dos dois objetos.

o ideal é ter a classe:

public class UmNomeBom {
     private Procedimento procedimento;
     private List<ProcedimentoConvenio> precosConvenios
}

e mandar serializar um objeto dessa classe