En su pregunta & Categorías caso, debe usar @ManyToMany relación. @ManyToMany significa básicamente que "una pregunta puede pertenecer a muchas categorías al mismo tiempo" y "una categoría puede contener muchas preguntas al mismo tiempo". Se creará automáticamente una nueva tabla para almacenar las asignaciones. Su código se vería así:
@Entity
public class Question implements Serializable {
...
@ManyToMany
private List<Category> categories;
...
}
@Entity
public class Category implements Serializable {
...
@ManyToMany
private List<Question> questions;
...
}
Si utiliza la relación @OneToMany para sus preguntas y categorías (digamos Categoría en el lado Uno y preguntas sobre el otro), esto significa que "una pregunta que sólo puede pertenecer a una Categoría "y" una Categoría pueden contener muchas Preguntas al mismo tiempo ". No se necesita una nueva tabla para almacenar la asignación. En su lugar, se creará automáticamente un nuevo campo en el lado Muchos para registrar la ID del lado Uno. Su código se vería así:
@Entity
public class Question implements Serializable {
...
@ManyToOne
private Category theCategory;
...
}
@Entity
public class Category implements Serializable {
...
@OneToMany(mappedBy="theCategory")
private List<Question> questions;
...
}
Awesome explanation. Debería tener muchos más upvotes. – LppEdd