1
I am trying to persist an object in the database but I get this error:
WARN: SQL Error: 0, SQLState: 54000
ERROR: ERRO: listas de alvos podem ter no máximo 1664 entradas
Advertência: A system exception occurred during an invocation on EJB OrdemServicoFacade, method: public void br.com.curso.ejb.OrdemServicoFacade.salvar(br.com.curso.entidade.OrdemServico)
My Way Save
@Override
public void salvar(OrdemServico entity) {
if (entity.getVenda().equals(false)) {
entity = em.merge(entity);
} else if (entity.getTipoDoc().equals("DINHEIRO")) {
entity = em.merge(entity);
geraContasReceber(entity);
} else if (entity.getTipoDoc().equals("CHEQUE")) {
entity = em.merge(entity);
geraCheque(entity);
if (entity.getEntrada().compareTo(BigDecimal.ZERO) == 1) {
geraContasRecebidas(entity);
}
} else if (entity.getTipoDoc().equals("CARTÃO CRÉDITO")) {
entity = em.merge(entity);
geraCartaoCredito(entity);
if (entity.getEntrada().compareTo(BigDecimal.ZERO) == 1) {
geraContasRecebidas(entity);
}
//CONTROLE CARTÃO CREDITO
} else if (entity.getTipoDoc().equals("CARTÃO DÉBITO")) {
entity = em.merge(entity);
geraCartaoDebito(entity);
if (entity.getEntrada().compareTo(BigDecimal.ZERO) == 1) {
geraContasRecebidas(entity);
}
//CONTROLE CARTÃO DÉBITO
} else if (entity.getTipoDoc().equals("CREDIÁRIO")) {
entity = em.merge(entity);
geraContasReceber(entity);
if (entity.getEntrada().compareTo(BigDecimal.ZERO) == 1) {
geraContasRecebidas(entity);
}
//CONTROLE CARTÃO DÉBITO
}
}
My Entity (Attributes)
private static final long serialVersionUID = 1L;
@Id
// @GeneratedValue(strategy = GenerationType.IDENTITY)
@Column
private Long id;
@Column
@Temporal(javax.persistence.TemporalType.DATE)
private Date dtVenda = new Date();
@Column
private String nomeFun;
@Column
@Temporal(javax.persistence.TemporalType.DATE)
private Date dataVencimento = new Date();
@Column
private BigDecimal total = BigDecimal.ZERO;
@Column
private BigDecimal entrada = BigDecimal.ZERO;
@Column
private BigDecimal valorHora = BigDecimal.ZERO;
@Column
private BigDecimal totalDesc = BigDecimal.ZERO;
@Column
private BigDecimal totalDescEn = BigDecimal.ZERO;
@Column
private BigDecimal totalHoras = BigDecimal.ZERO;
@Column
private BigDecimal acrescimo = BigDecimal.ZERO;
@Column
private BigDecimal desconto = BigDecimal.ZERO;
@Column
private BigDecimal valorDesconto = BigDecimal.ZERO;
@Column
private Boolean venda = Boolean.FALSE;
@Column
private String valida;
private String recebido;
private String recebido2;
private String recebido3;
@Column
private String localServico = "INTERNO";
@ManyToOne
private Bandeira bandeira;
@Column
private String numeroDoc;
@Column
private String modelo;
@Column
private String veiculo;
private String contato;
private String veiculo2;
private String veiculo3;
private String placa;
private String placa2;
private String placa3;
private String obsVeiculo;
@Column(length = 800)
private String solicitacaoCliente;
@Column
@CPF
private String cpfNota;
@Column
private String cnpjNota;
@Column
private String numeroSerie;
@Column
private String numeroHorasMaquinas;
@Column
private String numeroSerieMotor;
@Column
private String numeroSerieTranmmissao;
@Column
private String tipoServico;
@Column
private String saiuDe;
private String chegouEm;
@Temporal(javax.persistence.TemporalType.TIME)
private Date horaSaida = new Date();
@Temporal(javax.persistence.TemporalType.TIME)
private Date horaChegada = new Date();
@Temporal(javax.persistence.TemporalType.DATE)
private Date dtIn;
@Temporal(javax.persistence.TemporalType.DATE)
private Date dtFim;
@Temporal(javax.persistence.TemporalType.DATE)
private Date dtPrevisao;
@Temporal(javax.persistence.TemporalType.DATE)
private Date horaViagem;
private BigDecimal inicioServico = BigDecimal.ZERO;
@Column(length = 600)
private String descricaoProblema;
@Column(length = 800)
private String solucaoProblema;
private BigDecimal terminoServico = BigDecimal.ZERO;
private BigDecimal horaDeTrabalho = BigDecimal.ZERO;
private String idFrota;
private String kmInicial;
private String kmFinal;
@Column
@Min(value = 1)
private Integer qtdParcela = 1;
@Column
private String tipoPagamento = "A VISTA";
@Column(length = 600)
private String obs = "".toUpperCase();
private String obs2 = "".toUpperCase();
private String obs3 = "".toUpperCase();
private String tipoDoc;
@Column
private Boolean fiscal = Boolean.FALSE;
@ManyToOne
private Pessoa pessoa;
@ManyToOne
private Funcionario funcionario;
@ManyToOne
private TipoDeManutencao tipoDeManutencao;
@ManyToOne
private SituacaoOs situacaoOs;
@Column(columnDefinition = "TEXT")
private String xml;
private Boolean naoTransmitida;
@ManyToOne
private Banco banco;
private String modeloNota;
@OneToMany(cascade = CascadeType.ALL,
fetch = FetchType.LAZY, orphanRemoval = true,
mappedBy = "ordemServico")
private List<ItemServico> itensServicos = new ArrayList<>();
@OneToMany(cascade = CascadeType.ALL,
fetch = FetchType.LAZY, orphanRemoval = true,
mappedBy = "ordemServico")
private List<ItemEquipamentos> itensEquipamentos = new ArrayList<>();
@OneToMany(cascade = CascadeType.ALL,
fetch = FetchType.LAZY,
mappedBy = "ordemServico",
orphanRemoval = true)
private List<Parcela> parcelas;
@ManyToOne
private Empresa empresa;
@Column(length = 900)
private String retornoFiscal;
@Column
private String codNfce;
@Column
private String chaveNfce;
@Column
private String chaveNfe;
@Column
private String codNfe;
@Column
private Boolean fiscalCancelado;
@Column
@Temporal(javax.persistence.TemporalType.TIMESTAMP)
private Date dataCancelamentoFiscal;
@Column
private String situacaoConsulta;
@Column
private String statusAux;
Your answer solved my problem, just one observation, when we use LAZY on objects that appear in a list for example, we need to load it manually, more if it doesn’t appear in the list and just put @Manytoone(fetch = Fetchtype.LAZY) and all right. Thank you for the reply.
– Leandro Santos