Hibernate + vRaptor + ManyToMany

6 respostas
Fmgasparino

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.

6 Respostas

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?

Fmgasparino

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?

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…

leonardofl

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!!!

Lucas_Cavalcanti

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

Fmgasparino

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();
	}
Lucas_Cavalcanti

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

Criado 1 de novembro de 2010
Ultima resposta 1 de nov. de 2010
Respostas 6
Participantes 3