Hola,
estoy intentado mapear mi aplicación pero me estoy volviendo bastante loco. La aplicacion usa struts2 e hibernate annotations.
Tengo dos tablas,
USER
user_id -----> PK
user_nam
....
COSAS
cosa_id ----> PK
user_id ----> PK
cosa_nombre
....
La clase user.java tiene:
@Id
@GeneratedValue
@Column(name = "USER_ID")
public Long getId() {...}
public void setId(){...}
//Lista donde se almacena una lista con el id del usuario y el id de las cosas.
@OneToMany
@JoinTable(name = "COSAS", joinColumns={@JoinColumn(name="USER_ID")}, inverseJoinColumns = { @JoinColumn(name = "COSA_ID") })
public Set<Cosa> getCosalist() {...}
public void setList2doList(Set<Cosa> CosaList) {...}
resto de getters y setter....
La clase cosa.java tiene:
@Id
@GeneratedValue
@Column(name = "COSA_ID")
public Long getId() {...}
public void setId(Long id) {...}
@Id
@GeneratedValue
@Column(name = "USER_ID")
@ManyToOne
@JoinTable(name = "USER", joinColumns={@JoinColumn(name="USER_ID")})
public Long getUser() {..}
public void setUser(Long user) {..}
resto de getters y setter....
Uso hibernate Tools para eclipse y me sale un error con el session factory tal que asi:
org.hibernate.MappingException: Foreign key (FK35A3EEDF62F878A2:COSA [COSA_ID])) must have same number of columns as the referenced primary key (COSA [USER_ID,COSA_ID])
Foreign key (FK35A3EEDF62F878A2:COSA [COSA_ID])) must have same number of columns as the referenced primary key (COSA [USER_ID,COSA_ID])
En la BD tengo hecha la relación correctamente.
He probado y mirado multitud de paginas y no llego a solucionarlo.
Quitando la etiqueta @ManyToOne del getUser tampoco rula...
El problema creo yo esta con las anotaciones, pero no llego a ver donde esta el problema.
Muchas gracias a todos