Olá Otávio..
Cara, então, no caso criei uma entidade chamada TabelaCliente, no qual é armazenado o cliente e data de início e término, bem como uma entidade chamada ClienteProduto, que possui a TabelaCliente, o Produto e o valor da tabela.
Nesse caso, como ficaria?
Essas são as definições das minhas entidades:
@Entity
public class TabelaCliente implements Serializable {
private static final long serialVersionUID = -7223499247611524735L;
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "tabela_cliente_sequence")
@SequenceGenerator(name = "tabela_cliente_sequence", sequenceName = "tabela_cliente_sequence")
private int codigo;
private Calendar dataInicial;
private Calendar dataFinal;
@Null
@ManyToOne
private Cliente cliente;
@OneToMany(mappedBy = "tabelaCliente")
private List<ClienteProduto> produtos;
public class ClienteProduto implements Serializable {
private static final long serialVersionUID = 916792558890873578L;
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "cliente_produto_sequence")
@SequenceGenerator(name = "cliente_produto_sequence", sequenceName = "cliente_produto_sequence")
private int codigo;
@ManyToOne
private Produto produto;
private BigDecimal valor;
private Calendar data;
@ManyToOne
TabelaCliente tabelaCliente;