Ce n'relation propriétaire des moyens en relation bidirectionnelle?

J'ai un modèle simple avec un Question et Choice objet.

  • UNE Question a BEAUCOUP de CHOIX(S).
  • BEAUCOUP de Choix a UNE Question

Il existe deux façons de mettre en œuvre qu'avec Hibernate

Mise en œuvre: Le propriétaire de la côté est le Choix

Question.java

@OneToMany (mappedBy="question")
private Set choices = new HashSet();

Choice.java

@ManyToOne
@JoinColumn (name="QUESTION_ID")
private Question question;

Mise en œuvre de Deux: Le propriétaire de la côté est Question

Question.java

@OneToMany
@JoinColumn (name = "QUESTION_ID")
private Set choices = new HashSet();

Choice.java

@ManyToOne
@JoinColumn (name="QUESTION_ID", updatable = false, insertable = false)
private Question question;

Quelle est la différence entre les deux?

  • Me démontrer que je me trompe, mais je crois que la modification de la non-possession d'un côté n'est pas reflétée dans la base de données automatiquement (à l'aide sale de la vérification), lors de la modification de posséder côté sans modifier l'autre. Notez que dans ce cas, le nombre de côté est le choix naturel pour le propriétaire car il a une clé étrangère sur la base de données de niveau.
  • N'avez-vous pas oublier de mettre le type d'argument dans l'Ensemble de choix? E. G : Set<Options> choises. Si vous ne l'utilisez pas, comment hibernate pouvez déterminer où (quelle classe?) pour trouver la "question" de l'attribut que vous faites référence dans le mappedBy annotation.. ou mise en veille prolongée est conscient de que en quelque sorte.. ou je ne sais pas comment cela fonctionne derrière les rideaux..
InformationsquelleAutor Sydney | 2012-01-19