I have a table what represent a many to many relationship.
+----------+ +------------+ +----------+
| User | | UserGroups | | Group |
+----------+ +------------+ +----------+
| id (PK)|---(1,N)---| user_id |---(N,1)---| id (PK)|
| year (PK)| | year | | year (PK)|
| name | | group_id | | name |
+----------+ +------------+ +----------+
In Java, I have only the entity User and Group, and I don't like to have UserGroups in Java model because It didn't provide more information that the relationship. My class User is like that:
@Entity
@Table(name="User")
public class User {
@EmbeddedId
private UserPK id;
@ManyToMany
@JoinTable(name = "UserGroups",
joinColumns = { @JoinColumn(name = "user_id", referencedColumnName="id"),
@JoinColumn(name = "year", referencedColumnName="year") },
inverseJoinColumns = { @JoinColumn(name = "group_id", referencedColumnName = "id"),
@JoinColumn(name = "year", referencedColumnName = "year") })
private List<Group> groups;
}
When I try to run the application I get this exception:
org.hibernate.MappingException:Repeated column in mapping for collection: com.testapp.model.entities.User.groups column: year
I don't want to have UserGroups in my Java model. I don't want to create another year column in UserGroups table. How I can do this relation in Java?