Boa tarde. Estou com o seguinte tenho uma classe Venda e outra ProdutoVenda, onde a classe venta contem uma lista de produtoVenda, quando tento salvar a classe o dados da classe venda dar um erro ao tentar inserir os dados da classe produtoVenda, ele reclama que o id da classe pai esta nullo na classe filha.
Segue abaixo o codigo.
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.util.Date;
import java.util.List;
import javax.persistence.*;
import lombok.Getter;
import lombok.Setter;
@Entity
@Table(name = "pdv_venda")
@Getter
@Setter
public class Venda extends AbstractEntity implements Serializable {
private static final long serialVersionUID = 4203174084588806620L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "venda_id")
private Long id;
@Column(nullable = false)
private Date data;
@Column(columnDefinition = "DECIMAL(10,2)")
private BigDecimal total;
@Column(columnDefinition = "DECIMAL(10,2)")
private BigDecimal descontos;
@ManyToOne
@JoinColumn(name = "caixa_id")
private Caixa caixa;
@ManyToOne
@JoinColumn(name = "cliente_id")
private Cliente cliente;
@OneToMany(mappedBy = "venda", cascade = CascadeType.ALL)
private List<ProdutoVenda> produtoVendas;
}
import java.io.Serializable;
import java.math.BigDecimal;
import javax.persistence.*;
import lombok.Getter;
import lombok.Setter;
@Entity
@Table(name = "pdv_produto_venda")
@Getter
@Setter
public class ProdutoVenda extends AbstractEntity implements Serializable {
private static final long serialVersionUID = 4203174084588806620L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "prod_vend_id")
private Long id;
@Column(columnDefinition = "DECIMAL(10,2)")
private BigDecimal valor;
@Column(length = 100)
private Long quantidade;
@ManyToOne
@JoinColumn(name = "produto_id")
private Produto produto;
@ManyToOne
@JoinColumn(name = "venda_id", nullable = false)
private Venda venda;
}
@Override
public VendaDTO save(VendaDTO dto) {
Venda entity = convert.convertToEntity(dto);
entity = dao.save(entity);
return convert.convertToDTO(entity);
}
Errooooo
Hibernate: insert into pdv_venda (caixa_id, cliente_id, data, descontos, total, venda_id) values (?, ?, ?, ?, ?, ?)
Hibernate: insert into pdv_produto_venda (produto_id, quantidade, valor, venda_id, prod_vend_id) values (?, ?, ?, ?, ?)
2018-03-19 13:14:57.535 WARN 6524 --- [nio-8080-exec-1] o.h.engine.jdbc.spi.SqlExceptionHelper : SQL Error: 0, SQLState: 23502
2018-03-19 13:14:57.536 ERROR 6524 --- [nio-8080-exec-1] o.h.engine.jdbc.spi.SqlExceptionHelper : ERROR: null value in column "venda_id" violates not-null constraint
Detalhe: Failing row contains (25, null, 2, 7, 77.00, null).
2018-03-19 13:14:57.570 ERROR 6524 --- [nio-8080-exec-1] o.a.c.c.C.[.[.[.[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [/api] threw exception [Request processing failed; nested exception is org.springframework.dao.DataIntegrityViolationException: could not execute statement; SQL [n/a]; constraint [venda_id]; nested exception is org.hibernate.exception.ConstraintViolationException: could not execute statement] with root cause
org.postgresql.util.PSQLException: ERROR: null value in column "venda_id" violates not-null constraint
Detalhe: Failing row contains (25, null, 2, 7, 77.00, null).
at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2455) ~[postgresql-9.4.1212.jre7.jar:9.4.1212.jre7]
at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:2155) ~[postgresql-9.4.1212.jre7.jar:9.4.1212.jre7]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_152-release]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_152-release]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_152-release]
at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_152-release]
at org.apache.tomcat.jdbc.pool.StatementFacade$StatementProxy.invoke(StatementFacade.java:114) ~[tomcat-jdbc-8.5.23.jar:na]
at com.sun.proxy.$Proxy99.executeUpdate(Unknown Source) ~[na:na]
at org.hibernate.engine.jdbc.intern
Pelo o que eu entendir o venda_id esta nullo no ProdutoVenda, alguém poderia me dar uma ajuda ? Att...