Pessoal, estou tendo problema para dar update em uma coluna que contem um atributo @Embeddable o caso é o seguinte:
Eu tenho uma classe que se chama itemNotaFiscal e que possui um @embeded que se chama CombustivelNF com alguns outros atributos, esse itemNotaFiscal tem relação de muitos para um com a classe NotaFiscal.
Quando salvo uma notaFiscal com os itens já preenchidos ela insere ok, mas se eu salvar a notaFiscal sem itens e depois tentar atualizar ela colocando os itens ela me retorna o seguinte erro:
could not get a field value by reflection getter of CombustivelNF.aliquotaCide
Esse erro da para todos os campos da minha classe combustível.
Segue as entidades:
@Embeddable
public class CombustivelNF implements Serializable {
@Column(name = "codigo_produto_anp")
private String codigoProdutoAnp;
@Column(name = "descricao_produto_anp")
private String descricaoProdutoAnp;
@Column(name = "percentual_glp")
private BigDecimal percentualGlp;
@Column(name = "percentual_gas_natural_nacional")
private BigDecimal percentualGasNaturalNacional;
@Column(name = "percentual_gas_natural_internacional")
private BigDecimal percentualGasNaturalInternacional;
@Column(name = "valor_partida_combustivel")
private BigDecimal valorPartida;
@Column(name = "codif")
private String codif;
@Column(name = "quantidade_faturada_temp_ambiente")
private BigDecimal quantidadeFaturadaTempAmbiente;
@Column(name = "uf_consumo_combustivel")
private String ufConsumoCombustivel;
@Column(name = "bc_cide")
private BigDecimal bcCide;
@Column(name = "aliquota_cide")
private BigDecimal aliquotaCide;
@Column(name = "valor_cide")
private BigDecimal valorCide;
public String getCodigoProdutoAnp() {
return codigoProdutoAnp;
}
public void setCodigoProdutoAnp(String codigoProdutoAnp) {
this.codigoProdutoAnp = codigoProdutoAnp;
}
public String getDescricaoProdutoAnp() {
return descricaoProdutoAnp;
}
public void setDescricaoProdutoAnp(String descricaoProdutoAnp) {
this.descricaoProdutoAnp = descricaoProdutoAnp;
}
public BigDecimal getPercentualGlp() {
return percentualGlp;
}
public void setPercentualGlp(BigDecimal percentualGlp) {
this.percentualGlp = percentualGlp;
}
public BigDecimal getPercentualGasNaturalNacional() {
return percentualGasNaturalNacional;
}
public void setPercentualGasNaturalNacional(BigDecimal percentualGasNaturalNacional) {
this.percentualGasNaturalNacional = percentualGasNaturalNacional;
}
public BigDecimal getPercentualGasNaturalInternacional() {
return percentualGasNaturalInternacional;
}
public void setPercentualGasNaturalInternacional(BigDecimal percentualGasNaturalInternacional) {
this.percentualGasNaturalInternacional = percentualGasNaturalInternacional;
}
public BigDecimal getValorPartida() {
return valorPartida;
}
public void setValorPartida(BigDecimal valorPartida) {
this.valorPartida = valorPartida;
}
public String getCodif() {
return codif;
}
public void setCodif(String codif) {
this.codif = codif;
}
public BigDecimal getQuantidadeFaturadaTempAmbiente() {
return quantidadeFaturadaTempAmbiente;
}
public void setQuantidadeFaturadaTempAmbiente(BigDecimal quantidadeFaturadaTempAmbiente) {
this.quantidadeFaturadaTempAmbiente = quantidadeFaturadaTempAmbiente;
}
public String getUfConsumoCombustivel() {
return ufConsumoCombustivel;
}
public void setUfConsumoCombustivel(String ufConsumoCombustivel) {
this.ufConsumoCombustivel = ufConsumoCombustivel;
}
public BigDecimal getBcCide() {
return bcCide;
}
public void setBcCide(BigDecimal bcCide) {
this.bcCide = bcCide;
}
public BigDecimal getAliquotaCide() {
return aliquotaCide;
}
public void setAliquotaCide(BigDecimal aliquotaCide) {
this.aliquotaCide = aliquotaCide;
}
public BigDecimal getValorCide() {
return valorCide;
}
public void setValorCide(BigDecimal valorCide) {
this.valorCide = valorCide;
}
}
@Entity
@Table(name = "item_nota_fiscal")
@XmlRootElement
@NamedQueries({
@NamedQuery(name = "ItemNotaFiscal.findAll", query = "SELECT i FROM ItemNotaFiscal i")})
public class ItemNotaFiscal extends ItemNotas implements Serializable, Comparable<ItemNotaFiscal> {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Basic(optional = false)
@Column(name = "id")
private Long id;
@Column(name = "cod_enquadra_ipi")
private String codEnquadraIpi;
@Column(name = "bc_imposto_import", precision = 15, scale = 2)
private BigDecimal bcII;
@Column(name = "valor_desp_aduan", precision = 15, scale = 2)
private BigDecimal valorDespAdua;
@Column(name = "valor_imposto_import", precision = 15, scale = 2)
private BigDecimal valorII;
@Column(name = "valor_iof", precision = 15, scale = 2)
private BigDecimal valorIof;
@Column(name = "valor_total", precision = 15, scale = 2)
private BigDecimal valorTotal;
@JoinColumn(name = "id_nota", referencedColumnName = "id")
@ManyToOne(optional = false)
private NotaFiscal idNota;
@Column(name = "cest")
private String cest;
@OneToMany(cascade = CascadeType.ALL, mappedBy = "idItemNota")
private Collection<DeclImportacao> declImportacaoCollection;
@Column(name = "valor_issqn_retido")
private BigDecimal valorIssqnRetido;
@Column(name = "exigibilidade_iss")
private Integer exigibilidadeIss;
@Column(name = "codigo_servico_prestado")
private String codigoServicoPrestado;
@Column(name = "indicador_incentivo_fiscal")
private Short indicadorIncentivoFiscal;
@Column(name = "item_lista_servico")
private String itemListaServico;
@Column(name = "desconto_condicionado")
private BigDecimal descontoCondicionado;
@Column(name = "valor_aproximado_tributos")
private BigDecimal valorAproximadoTributos;
@Enumerated(EnumType.STRING)
@Column(name = "indicador_escala_relevante")
private IndicadorEscalaRelevante indicadorEscalaRelevante;
@Column(name = "cnpj_fabricante_mercadoria")
private String cnpjFabricanteMercadoria;
@Column(name = "codigo_beneficio_fiscal")
private String codigoBeneficioFiscal;
@Embedded
private CombustivelNF combustivel;
@Column(name = "valor_base_calculo_fcp")
private BigDecimal valorBaseCalculoFcp;
@Column(name = "aliquota_fcp")
private BigDecimal aliquotaFcp;
@Column(name = "valor_fcp")
private BigDecimal valorFcp;
@Column(name = "valor_base_calculo_fcp_st")
private BigDecimal valorBaseCalculoFcpSt;
@Column(name = "aliquota_fcp_st")
private BigDecimal aliquotaFcpSt;
@Column(name = "valor_fcp_st")
private BigDecimal valorFcpSt;
@Column(name = "valor_base_calculo_fcp_st_retido")
private BigDecimal valorBaseCalculoFcpStRetido;
@Column(name = "aliquota_fcp_st_retido")
private BigDecimal aliquotaFcpStRetido;
@Column(name = "valor_fcp_st_retido")
private BigDecimal valorFcpStRetido;
@Column(name = "aliquota_suportada_consumidor_final")
private BigDecimal aliquotaSuportadaConsumidorFinal;
@Column(name = "percentual_mercadoria_devolvida")
private BigDecimal percentualMercadoriaDevolvida;
@Column(name = "valor_ipi_devolvido")
private BigDecimal valorIpiDevolvido;
@Transient
private String codProdutoServico;
public class NotaFiscal implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Basic(optional = false)
@Column(name = "id")
private Long id;
@Column(name = "chave_nfe")
private String chaveNfe;
@Basic(optional = false)
@Column(name = "modelo_nota")
private String modeloNota;
@Basic(optional = false)
@Column(name = "serie_nota")
private String serieNota;
@Basic(optional = false)
@Column(name = "numero")
private String numero;
@Column(name = "tipo_emissao")
private Short tipoEmissao;
@Column(name = "finalidade")
private Short finalidade;
@Column(name = "indicador_presenca")
private Short indicadorPresenca;
@Column(name = "crt")
private Short crt;
@Column(name = "dh_cont")
@Temporal(TemporalType.TIMESTAMP)
private Date dhCont;
@Column(name = "just_cont")
private String justCont;
@Basic(optional = false)
@Column(name = "data_emissao")
@Temporal(TemporalType.TIMESTAMP)
private Date dataEmissao;
@Column(name = "data_saida")
@Temporal(TemporalType.TIMESTAMP)
private Date dataSaida;
@Column(name = "situacao")
private Short situacao;
@Column(name = "stat_nfe")
private String statNfe;
@Column(name = "num_recibo")
private String numRecibo;
@Column(name = "incide_frt_desp_bc_icms_st")
private Boolean incideFrtDespBcIcmsSt;
@Column(name = "incide_frt_desp_bc_ipi")
private Boolean incideFrtDespBcIpi;
@Column(name = "tipo_frete")
private Short tipoFrete;
// @Max(value=?) @Min(value=?)//if you know range of your decimal fields consider using these annotations to enforce field validation
@Column(name = "valor_csll", precision = 15, scale = 2)
private BigDecimal valorCsll;
@Column(name = "valor_inss", precision = 15, scale = 2)
private BigDecimal valorInss;
@Column(name = "valor_irpj", precision = 15, scale = 2)
private BigDecimal valorIrpj;
@Column(name = "valor_iss", precision = 15, scale = 2)
private BigDecimal valorIss;
@Column(name = "aliquota_iss", precision = 15, scale = 4)
private BigDecimal aliquotaIss;
@Column(name = "bc_iss", precision = 15, scale = 2)
private BigDecimal bcIss;
@Column(name = "valor_deducoes", precision = 15, scale = 2)
private BigDecimal valorDeducoes;
@Column(name = "dados_adicionais_fisco")
private String dadosAdicionaisFisco;
@Column(name = "dados_adicionais_contribuinte")
private String dadosAdicionaisContribuinte;
@Column(name = "quantidade_volumes")
private Integer quantidadeVolumes;
@Column(name = "marca_volumes")
private String marcaVolumes;
@Column(name = "especie_volumes")
private String especieVolumes;
@Column(name = "numeracao_volumes")
private String numeracaoVolumes;
@Column(name = "pesob_volumes")
private BigDecimal pesoBrutoVolumes;
@Column(name = "pesol_volumes")
private BigDecimal pesoLiquidoVolumes;
@Column(name = "processo_judicial_sup_exig")
private String processoJudicialSupExig;
@Column(name = "dh_recebimento")
private String dhRecebimento;
@Column(name = "tipo_contribuinte")
private Short tipoContribuinte;
@Column(name = "prot_autorizacao")
private String protAutorizacao;
@Column(name = "just_cancelamento")
private String justCancelamento;
@OneToMany(cascade = CascadeType.ALL, mappedBy = "idNota")
private Collection<ItemNotaFiscal> itemNotaFiscalCollection;