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