J'ai beaucoup à beaucoup de relation entre l'utilisateur et l'événement. J'ai besoin d'avoir une colonne supplémentaire dans la table relationnelle. J'ai fait l'identification:@ManyToMany avec colonne supplémentaire - comment charger via Spring Data?
@Entity
public class User {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private long id;
@OneToMany(mappedBy="user")
private Set<EventUser> eventUsers = new HashSet<>();
//
}
@Entity
public class Event {
@Id
@GeneratedValue(strategy= GenerationType.AUTO)
private long id;
@OneToMany(mappedBy="event")
private Set<EventUser> eventUsers = new HashSet<>();
//
}
@Entity
@Table(name = "Event_User")
public class EventUser {
@Id
@GeneratedValue(strategy= GenerationType.AUTO)
private long id;
private String reaction;
@ManyToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "user_id")
private User user;
@ManyToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "event_id")
private Event event;
//
}
Mais maintenant ... Je ne sais pas comment charger tous les événements où l'utilisateur a l'email concret. Avant cela, j'ai utilisé la méthode: findByUsersEmail (String email);
Maintenant, je ne peux pas faire cela, parce que l'événement n'a pas de champ Set users.
Des idées?
1. Modifier la structure des tables: Utilisateur, Événement, Réaction, Réaction-événement-utilisateur 2. Changer la requête à la méthode 'findByEmail' 3. Qu'en est-il de' @ JoinTable' si vous n'avez besoin que d'événements et non besoin de raisons –