I have two tables orders and leads, but for some use cases reasons, leads without email or phone number will not be registered at leads table, but the orders table contains all orders of real world leads, Id like to map orders as a child of leads table, but optional, a lead regarding an order may not always have any record at leads table, this was Ive done, it seem worked, but I can figure out if it would cause me an unexpected bug:
@Table(name="base_clientes")
@Entity(name="base_clientes")
@Data
@EqualsAndHashCode
@AllArgsConstructor
@NoArgsConstructor
public class TodosClientesEntidade {//LEADS ENTITY
@Id
@Column(name="COD CLIENTE")
private String documento;
@Column(name="varejo_id")
private Integer varejoId;
@Column(name="CLIENTE")
private String nomeCliente;
@Column(name="UF")
private String estado;
@Column(name="CIDADE")
private String cidade;
@Column(name="DATA_CADASTRO")
private LocalDate dataCadastro;
@Column(name="DATA_ULTIMA_COMPRA")
private LocalDate dataUltimaCompra;
@Column(name="MOMENTO_ULTIMA_COMPRA")
private LocalDateTime momentoUltimaCompra;
@Column(name="TELEFONE")
private String telefone;
@Column(name="EMAIL")
private String email;
@Column(name="ANIVERSARIO")
private String aniversario;
@Column(name="TICKETS")
private Integer quantidadeCompras;
@Column(name="VENDA LIQUIDA")
private Float valorVendido;
@Column(name="TICKET MEDIO")
private Float ticketMedio;
@Column(name="LOJA")
private String loja;
@OneToMany(mappedBy = "cliente")
@JsonManagedReference
@EqualsAndHashCode.Exclude
private Set<TodosPedidosEntidade> pedidos;
}
@Data
@Entity(name="base_pedidos_distrinchados")
@Table(name="base_pedidos_distrinchados")
public class TodosPedidosEntidade {//ORDERS ENTITY
@Id
@GeneratedValue(strategy = GenerationType.UUID)
@Column(name="id_distrinchamento")
private String distrinchamentoId;
@Column(name="varejo_id")
private Integer varejoId;
private String loja;
private LocalDateTime moment;
private String documento;
private String produto;
private String categoria;
private String cor;
private String tamanho;
private Integer quantidade;
private Float valor;
@Column(name="varejo_id_vendor")
private Integer varejoIdVendor;
@Column(name="documento_vendor")
private String documentoVendor;
@Column(name="nome_vendor")
private String nomeVendor;
@ManyToOne
@JoinColumn(name = "documento", referencedColumnName = "COD CLIENTE",insertable = false, updatable = false)
@JsonBackReference
@EqualsAndHashCode.Exclude
private TodosClientesEntidade cliente;
}
Notice I made “documento” JoinColumn free, that’s I can register an order without record a lead, there is any foreign to link this relationship in database, is that a problem?