Olá amigos,
Fiz uma implementação de duas classes: Cliente e Veiculo, onde um cliente pode ter vários veiculos. O problema é que quando eu coloco atributo mappedBy no atributo
private veiculos; (ou no get desse atributo), o Eclipse dá um erro em tempo de design, dizendo attribute named “cliente” has invalid mapping for this relationship (atributo “cliente” tem mapeamento inválido para esse relacionamento).
Trecho dos codigos:
Cliente
public class Cliente{
private Integer idCliente;
private String nomeCliente;
private List<Veiculo> veiculos;
//getters e setters
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name="id_cliente")
public Integer getIdCliente() {
return idCliente;
}
public void setIdCliente(Integer idCliente) {
this.idCliente = idCliente;
}
//outros getters e setters do Cliente omitidos
//Aqui ocorre o problema
@OneToMany(mappedBy="cliente") //aqui ocorre o erro no eclipse: attribute named "cliente" has invalid mapping for this relationship
public List<Veiculo> getVeiculos() {
return veiculos;
}
public void setVeiculos(Set<Veiculo> veiculos) {
this.veiculos = veiculos;
}
}
//trecho do código da entidade veiculo
@Entity
Public class Veiculo {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name="id_veiculo")
private Integer idVeiculo;
private String marca;
private String modelo;
private Cliente cliente;
//getters e setters de marca e modelo omitidos
//getters e setters de cliente no lado do veiculo
@ManyToOne
public Cliente getCliente() {
return cliente;
}
public void setCliente(Cliente cliente) {
this.pessoa = pessoa;
}
}
Pelo que diz na spec seção 9.1.23 deveria funcionar:
@Target({METHOD, FIELD}) @Retention(RUNTIME)
public @interface OneToOne {
Class targetEntity() default void.class;
CascadeType[] cascade() default {};
FetchType fetch() default EAGER;
boolean optional() default true;
String mappedBy() default "";
}
mappedBy (Optional) The field that owns the relationship. The mappedBy element is only specified on the inverse (non-owning) side of the association.
Usando o Toplink funciona…
–
Cordialmente,
Sávio Barros
+55 ([telefone removido]
+55 ([telefone removido]
msn: [email removido]