Gente, eu estou quebrando a cabeça com um problema de JPA.
Bom, o meu domínio é o seguinte:
[Cliente] 1----------N [Produto]N----------1[Venda]
| |
1----------------------------------------N
Ok, o meu mapeamento de entidades ficou assim:
Entidade Cliente:
@Entity
@Table(name = "cliente")
@NamedQuery ( name="todosClientes", query="SELECT c FROM Cliente c")
public class Cliente implements Serializable
{
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@Column
private String nome;
@OneToMany(mappedBy = "id")
private List<Produto> produto;
@OneToMany(mappedBy = "id")
private List<Venda> venda;
Entidade Venda:
@Entity
@Table(name="venda")
@NamedQuery(name="vendasDeClientes", query="SELECT v FROM Venda WHERE v.cliente.id = :identificador")
public class Venda implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@OneToMany(mappedBy="id")
private List<Produto> produto;
@ManyToOne
@JoinColumn(name="id", referencedColumnName="id")
private Cliente cliente;
@Column
private Integer quantidade;
@Column
private Long valor;
Entidade Produto:
@Entity
@Table(name="produto")
public class Produto implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@Column
private String nome;
@ManyToOne
@JoinColumn(name="id", referencedColumnName="id")
private Cliente cliente;
@ManyToOne
@JoinColumn(name="id", referencedColumnName="id")
private Venda venda;
Ok, mas quando eu rodo, é lançado o seguinte erro:
Exception [EclipseLink-7244] (Eclipse Persistence Services - 2.0.0.v20091127-r5931): org.eclipse.persistence.exceptions.ValidationException
Exception Description: An incompatible mapping has been encountered between [class entidades.Cliente] and [class entidades.Produto]. This usually occurs when the cardinality of a mapping does not correspond with the cardinality of its backpointer.
org.eclipse.persistence.exceptions.ValidationException.invalidMapping(ValidationException.java:1235)
O que pode está acontecendo? Porque o EclipseLink não está aceitando o relacionamento?